2017-07-15 207 views
1

我試圖呈現來自文件的模板EJS但我得到一個錯誤this.templateText.replace is not a function渲染EJS模板拋出錯誤this.templateText.replace不是函數

const http = require('http'); 
const fs = require('fs'); 
const ejs = require('ejs'); 

const server = http.createServer(function(req, res){ 
    fs.readFile('index.ejs', function(err, data) { 
     if (err) { 
      res.end("Error"); 
     } 

     res.end(ejs.render(data, { title: "Hello" })); 
    }); 
}); 

server.listen(4000); 

回答

6

原來,fs.readFile回報在回調原始緩衝區dataejs.redner期待一個字符串。

如果沒有指定編碼,然後被返回的原始緩衝液中。

如果你想從fs.readFile然後一個字符串,你需要通過編碼爲第二個參數:

fs.readFile('index.ejs', 'utf-8', function(err, data) { 
    // now data is a string 
});