呈现静态 html 时出错
Posted
技术标签:
【中文标题】呈现静态 html 时出错【英文标题】:Error rendering static 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)
我做错了什么?
【问题讨论】:
【参考方案1】:由于 readFile 返回值的默认编码,您的 indexTemplate 变量实际上包含缓冲区而不是字符串。您可能想尝试在 readFileSync 第二个参数中添加 encoding 来设置它,如下所示:
...
var indexTemplate = fs.readFileSync(__dirname + '/templates/index.html', 'utf8');
...
【讨论】:
以上是关于呈现静态 html 时出错的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 node.js 中使用 sendFile() 方法为两个路由提供静态文件时会出错