我正在尝试在加载“fs.readFile”时替换内容。
这是我的代码
app.engine('html', function (filePath, options, callback) {
fs.readFile(filePath, function (err, content) {
if (err) return callback(err)
let rendered = content.toString();
let regStr = '';
let reg;
for(let name in options) {
regStr = '#(' + name + ')#';
reg = new RegExp(regStr, 'g');
rendered = rendered.replace(reg, options[name]);
}
return callback(null, rendered)
});
});
我在浏览器中重新加载页面时收到错误消息。
TypeError: Cannot convert object to primitive value
at RegExp.[Symbol.replace] (native)
at String.replace (native)
at D:\docker_root\ifttt\app.js:57:29
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:446:3)
如果我改变了这一行
rendered = rendered.replace(reg, options[name]);
到
rendered = rendered.replace(reg, 'other string will be fine');
没关系。
我不知道这段代码有什么问题? 为什么它不能取代循环值。