渲染静态html时出错

low*_*key 3 ejs node.js express

这段代码:

var app = require('express').createServer();
var ejs = require('ejs');
var fs = require('fs');
var indexTemplate = fs.readFileSync(__dirname + '/templates/index.html');

app.get('/', function(req, res){
    res.end(ejs.render(indexTemplate, {}));
});
Run Code Online (Sandbox Code Playgroud)

给我以下错误

TypeError:Object Address在/home/lowerkey/node_modules/ejs/lib/ejs.js的Object.parse(/home/lowerkey/node_modules/ejs/lib/ejs.js:152:20)上没有方法'substr': 192:13 at Object.render(/home/lowerkey/node_modules/ejs/lib/ejs.js:235:10)at/home/lowerkey/workspace/address book/server/server.js:60:14 at callbacks( /home/lowerkey/node_modules/express/lib/router/index.js:272:11)在param(/home/lowerkey/node_modules/express/lib/router/index.js:246:11)传递(/ home) /lowerkey/node_modules/express/lib/router/index.js:253:5)在Object.handle的Router._dispatch(/home/lowerkey/node_modules/express/lib/router/index.js:280:4) /home/lowerkey/node_modules/express/lib/router/index.js:45:10)下一步(/home/lowerkey/node_modules/express/node_modules/connect/lib/http.js:203:15)

我究竟做错了什么?

小智 6

indexTemplate变量实际上包含了缓冲,而不是字符串,由于READFILE返回值的默认编码.您可能想尝试在readFileSync 2nd参数中添加编码来设置它,如下所示:

...
var indexTemplate = fs.readFileSync(__dirname + '/templates/index.html', 'utf8');
...
Run Code Online (Sandbox Code Playgroud)