Ошибка рендеринга статического HTML - PullRequest
3 голосов
/ 23 февраля 2012

Этот код:

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: Адрес объекта не имеет метода '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 Ответ

6 голосов
/ 03 марта 2012

Ваша переменная indexTemplate фактически содержит буфер вместо строки из-за кодировки по умолчанию возвращаемого значения readFile.Вы можете попытаться добавить кодировку в readFileSync 2-й параметр, чтобы установить его, как показано ниже:

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