2017-07-15 208 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 
});