node.jsで起きたエラー

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