渲染EJS模板会抛出错误this.templateText.replace不是函数

时间:2017-07-15 22:49:38

标签: javascript node.js ejs

我尝试从文件中呈现EJS模板但我收到错误this.templateText.replace is not a function

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

1 个答案:

答案 0 :(得分:13)

事实证明fs.readFile在回调data中返回原始缓冲区,而ejs.redner期待字符串。

  

如果未指定编码,则返回原始缓冲区。

如果您想从fs.readFile获取字符串,则需要将编码作为第二个参数传递:

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