fs.readfile 显示html,在异步fs.readFile的回调中使用EJS呈现HTML模板?

我用fs.readFileSync轻松实现了这一点,但我想异步执行此操作。我的代码如下。在异步fs.readFile的回调中使用EJS呈现HTML模板?

function send(err, str){

if(err){

console.log(err);

}

var template = ejs.render(str, 'utf8', {name: data.name});

transporter.sendMail({

from: myEmail,

to: anotherEmail,

subject: mySubject,

html: template,

attachments: images

}, function(err, response) {

if(err){

console.log(err);

}

});

}

fs.readFile('emailTemplate.ejs', send);

所以我做了我自己的fs.readFile回调,这样当该文件已被读取它将使电子邮件,把适当的名称,然后用nodemailer把它关闭。但是,它不喜欢这样。如果没有问题,它会通过错误获取,但在渲染模板时呈现以下错误。

TypeError: Object (Followed by the entire HTML of the template) has no method 'indexOf' at Object.exports.parse (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:144:21) at exports.compile (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:229:15) at Object.exports.render (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:289:10) at send (/home/ubuntu/workspace/routes/email.js:171:28) at fs.readFile (fs.js:272:14) at Object.oncomplete (fs.js:108:15)

虽然这样做同步工作正常。

var str = fs.readFileSync('emailTemplate.ejs', 'utf8');

var template = ejs.render(str, {

name: data.name

});

任何人都可以告诉我为什么会发生这种情况吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值