渲染 EJS 模板抛出错误 this.templateText.replace is not a function

Posted

技术标签:

【中文标题】渲染 EJS 模板抛出错误 this.templateText.replace is not a function【英文标题】:Rendering EJS template throws an error this.templateText.replace is not a function 【发布时间】:2017-12-20 18:18:11 【问题描述】:

我正在尝试从文件中呈现 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】:

原来fs.readFile 在回调data 中返回一个原始缓冲区,而ejs.redner 期待一个字符串。

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

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

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

【讨论】:

或使用ejs.renderFile(filename, data);

以上是关于渲染 EJS 模板抛出错误 this.templateText.replace is not a function的主要内容,如果未能解决你的问题,请参考以下文章

渲染 EJS 模板并将其保存为文件

在 express 节点 js 中重新渲染 EJS 模板

nodejs使用ejs模板渲染的数组问题

Node.js_express_服务器渲染页面 ejs

使用 Express 为 AngularJS 渲染一个 .ejs 模板并使用 AngularJS $scope 中的数据

浅谈ejs