2012-02-23 101 views
3

此代碼:錯誤渲染靜態html

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

給我下面的錯誤

TypeError: Object Address has no method 'substr' at Object.parse (/home/lowerkey/node_modules/ejs/lib/ejs.js:152:20) at /home/lowerkey/node_modules/ejs/lib/ejs.js: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) at param (/home/lowerkey/node_modules/express/lib/router/index.js:246:11) at pass (/home/lowerkey/node_modules/express/lib/router/index.js:253:5) at Router._dispatch (/home/lowerkey/node_modules/express/lib/router/index.js:280:4) at Object.handle (/home/lowerkey/node_modules/express/lib/router/index.js:45:10) at next (/home/lowerkey/node_modules/express/node_modules/connect/lib/http.js:203:15)

我在做什麼錯?

回答

6

您的index模板變量實際上包含緩衝區而不是字符串,因爲readFile返回值的默認編碼。你可能想嘗試添加編碼readFileSync第二個參數進行設置,如下所示:

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