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

Luk*_*tor 7 javascript ejs node.js

我正在尝试从文件中呈现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);
Run Code Online (Sandbox Code Playgroud)

Luk*_*tor 14

事实证明,fs.readFile在期望字符串的data同时返回回调中的原始缓冲区ejs.redner.

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

如果你想fs.readFile从那时得到一个字符串,你需要传递编码作为第二个参数:

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

  • 或者使用`ejs.renderFile(filename,data);` (3认同)