【问题标题】:Error rendering static html呈现静态 html 时出错
【发布时间】:2012-03-13 10:40:22
【问题描述】:

这段代码:

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, {}));
});

给我以下错误

类型错误:对象地址 没有方法“substr” 在 Object.parse (/home/lowerkey/node_modules/ejs/lib/ejs.js:152:20) 在 /home/lowerkey/node_modules/ejs/lib/ejs.js:192:13 在 Object.render (/home/lowerkey/node_modules/ejs/lib/ejs.js:235:10) 在/home/lowerkey/workspace/address book/server/server.js:60:14 在回调(/home/lowerkey/node_modules/express/lib/router/index.js:272:11) 在参数(/home/lowerkey/node_modules/express/lib/router/index.js:246:11) 通过(/home/lowerkey/node_modules/express/lib/router/index.js:253:5) 在 Router._dispatch (/home/lowerkey/node_modules/express/lib/router/index.js:280:4) 在 Object.handle (/home/lowerkey/node_modules/express/lib/router/index.js:45:10) 在下一个(/home/lowerkey/node_modules/express/node_modules/connect/lib/http.js:203:15)

我做错了什么?

【问题讨论】:

    标签: node.js express ejs


    【解决方案1】:

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

    ...
    var indexTemplate = fs.readFileSync(__dirname + '/templates/index.html', 'utf8');
    ...
    

    【讨论】:

      猜你喜欢
      • 2017-05-15
      • 2017-12-09
      • 2021-12-11
      • 2019-10-14
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多