Я пытаюсь отобразить шаблон 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);
11
Lukasz Wiktor 16 Июл 2017 в 01:49

1 ответ

Лучший ответ

Оказывается, fs.readFile возвращает необработанный буфер в обратном вызове data, в то время как ejs.redner ожидает строку.

Если кодировка не указана, возвращается необработанный буфер.

Если вы хотите получить строку из fs.readFile, вам нужно передать кодировку в качестве второго аргумента:

fs.readFile('index.ejs', 'utf-8', function(err, data) {
    // now data is a string
});
19
Lukasz Wiktor 16 Июл 2017 в 01:49
3
Или используйте ejs.renderFile(filename, data);
 – 
Slawa
8 Сен 2018 в 22:31