2012-02-23 3 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

indexTemplate 변수에는 실제로 readFile 반환 값의 기본 인코딩으로 인해 문자열 대신 버퍼가 들어 있습니다. 당신은 다음과 같이 그것을 설정하는 2 매개 변수 readFileSync에 인코딩를 추가하려고 할 수 있습니다 :

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