3

このコード:

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 で 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)

私は何を間違っていますか?

4

1 に答える 1

6

readFile戻り値のデフォルトのエンコーディングにより、indexTemplate変数には実際には文字列ではなくバッファが含まれています。次のように、readFileSync 2 番目のパラメーターにエンコーディングを追加して設定することをお勧めします。

...
var indexTemplate = fs.readFileSync(__dirname + '/templates/index.html', 'utf8');
...
于 2012-03-03T03:25:09.127 に答える