
さくらのVPSにnode.jsをインストールしました。購入した本は現場で通用する力を身につける Node.jsの教科書
です。この本でejsのテンプレートを使っているときにおきたエラーについてです。
※エラーが起きた原因は自分の書いたプログラムが間違っていただけです。
サンプルプログラム
sample.js
01 | var http =require( 'http' ); |
03 | var url =require( 'url' ); |
04 | var ejs =require( 'ejs' ); |
06 | var index = fs.readFileSync( './index.ejs' , 'utf8' ); |
09 | { 'name' : '太郎' , 'mail' : 'taro@domein.com' , 'tel' : '0120-66-3254' }, |
10 | { 'name' : '二郎' , 'mail' : 'jiro@domein.com' , 'tel' : '0120-454-3254' }, |
11 | { 'name' : '三郎' , 'mail' : 'saburo@domein.com' , 'tel' : '0120-454-3254' }, |
14 | var server = http.createServer(); |
15 | server.on( 'request' , doRequest); |
19 | function doRequest(req,res){ |
20 | var path = url.parse(req.url); |
22 | switch (path.pathname){ |
24 | var tmp = ejs.render(index,{ |
29 | res.setHeader( 'Content-Type' , 'text/html' ); |
35 | res.writeHead(200,{ 'Content-Type' : 'text/plain' }); |
44 | console.log( 'Server running at http://127.0.0.1:8124/' ); |
と書きました。
index.ejsファイル
04 | < meta http-equiv = "content-type" |
05 | content = "text/html; charset=UTF-8" > |
06 | < title ><%=title %></ title > |
12 | < h1 id = "h1" ><%=title %></ h1 > |
13 | < h2 id = "h2" ><%=msg %></ h2 > |
17 | <% for(var 1 = 0;i < datas.length ; i++) { %> |
19 | < td ><%= datas[i].name %></ td > |
20 | < td ><%= datas[i].mail %></ td > |
21 | < td ><%= datas[i].tel %></ td > |
この状態でアップをしてコマンドをたたきます。
1 | [root@dns html]# node /var/www/html/sample.js |
この状態でhttp://127.0.0.1:8124/にアクセスするとコマンド画面でエラーがでます。
01 | /var/www/html/node_modules/ejs/lib/ejs.js:465 |
04 | SyntaxError: Unexpected number while compiling ejs |
05 | at Object.Function (<anonymous>) |
06 | at Object.Template.compile (/var/www/html/node_modules/ejs/lib/ejs.js:455:12) |
07 | at Object.compile (/var/www/html/node_modules/ejs/lib/ejs.js:288:16) |
08 | at handleCache (/var/www/html/node_modules/ejs/lib/ejs.js:147:16) |
09 | at Object.exports.render (/var/www/html/node_modules/ejs/lib/ejs.js:315:8) |
10 | at Server.doRequest (/var/www/html/sample.js:24:17) |
11 | at Server.emit (events.js:98:17) |
12 | at HTTPParser.parser.onIncoming (http.js:2112:12) |
13 | at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23) |
14 | at Socket.socket.ondata (http.js:1970:22) |
このエラーについてはぐぐってもでてきませんでした。調べてみたら、このエラーはJSファイルではなくejsファイルが間違っていました。
index.ejsファイル
1 | <% for(var 1 = 0;i < datas.length ; i++) { %> |
varの後が1になっていますが、正しくはiです。なので・・・
1 | <% for(var i = 0;i < datas.length ; i++) { %> |
が正しいコードになります。jsが間違いとかでてくれないのでコードには気をつけないといけないです。
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS