node.jsで起きたエラー

さくらのVPSにnode.jsをインストールしました。購入した本は現場で通用する力を身につける Node.jsの教科書です。この本でejsのテンプレートを使っているときにおきたエラーについてです。
※エラーが起きた原因は自分の書いたプログラムが間違っていただけです。

サンプルプログラム

sample.js

01var http =require('http');
02var fs =require('fs');
03var url =require('url');
04var ejs =require('ejs');
05 
06var index = fs.readFileSync('./index.ejs','utf8');
07 
08var datas = [//表示するデータ
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'},
12];
13 
14var server = http.createServer();
15server.on('request', doRequest);
16server.listen(8124);
17 
18//関数作成
19function doRequest(req,res){
20    var path = url.parse(req.url);
21     
22    switch(path.pathname){
23        case '/':
24        var tmp = ejs.render(index,{
25            title:"Index Page",
26            msg:"これはサンプルなのだ",
27            datas:datas});
28 
29    res.setHeader('Content-Type','text/html');
30    res.write(tmp);
31    res.end();
32    break;
33 
34    default:
35    res.writeHead(200,{'Content-Type':'text/plain'});
36    res.write('ERROR');
37    res.end();
38    break;
39    };
40     
41 
42};
43 
44console.log('Server running at http://127.0.0.1:8124/');

と書きました。

index.ejsファイル

01<!DOCTYPE html>
02<html lang="ja">
03<head>
04    <meta http-equiv="content-type"
05        content="text/html; charset=UTF-8">
06    <title><%=title %></title>
07</head>
08  
09  
10<body>
11    <header>
12        <h1 id="h1"><%=title %></h1>
13        <h2 id="h2"><%=msg %></h2>
14    </header>
15    <div role="main">
16<table>
17<% for(var 1 = 0;i < datas.length; i++) { %>
18<tr>
19<td><%= datas[i].name %></td>
20<td><%= datas[i].mail %></td>
21<td><%= datas[i].tel %></td>
22</tr>
23<% } %>
24</table>
25    </div>
26</body>
27  
28</html>

この状態でアップをしてコマンドをたたきます。

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
02      throw e;
03            ^
04SyntaxError: 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