Node.js 将ExpressJS视图ejs渲染保存到变量
我正在尝试设置一封从Expressjs启动的确认电子邮件。 这个电子邮件模板是html格式的(现在是ejs),我需要将变量传递给它,以便以后可以保存在变量中并与NodeEmailer一起发送 我试图在没有成功的情况下做这样的事情:Node.js 将ExpressJS视图ejs渲染保存到变量,node.js,express,ejs,nodemailer,Node.js,Express,Ejs,Nodemailer,我正在尝试设置一封从Expressjs启动的确认电子邮件。 这个电子邮件模板是html格式的(现在是ejs),我需要将变量传递给它,以便以后可以保存在变量中并与NodeEmailer一起发送 我试图在没有成功的情况下做这样的事情: var final_html = res.render('confirm', {variables: 'aasdad'}); 节点电子邮件程序代码: var mailOptions = { from: test@test.
var final_html = res.render('confirm', {variables: 'aasdad'});
节点电子邮件程序代码:
var mailOptions = {
from: test@test.com, // sender address
to: 'test@test.com', // list of receivers
subject: 'Welcome '+req.body.name, // Subject line
html: final_html
};
如何才能做到这一点
提前谢谢
PD:回答后代码:
var final_html = res.render('confirm', {url: 'aasdad'}, function(err, html) {
if (err){ return err;}
return html;
});
只需将回调作为第三个参数传入,它将被调用为
(err,final_html)
:
无法让它工作,最终的html总是“未定义”是
err
set?如果没有,您使用的是什么版本的Express?您不能使用原始问题中显示的代码。回调将在将来某个时候调用,因此必须将依赖于final\u html
的res.render()
之后的任何内容放置在该回调中。我已经更新了我的答案,以更好地强调这一点。。。
res.render('confirm', {variables: 'aasdad'}, function(err, final_html) {
if (err) throw err; // TODO: handle errors better
var mailOptions = {
from: 'test@test.com', // sender address
to: 'test@test.com', // list of receivers
subject: 'Welcome ' + req.body.name, // Subject line
html: final_html
};
// call node-mailer with `mailOptions` here ...
});