请原谅我,如果我用错误的术语来描述我的问题,请纠正我。我正在开发节点和表达。我希望能够从我的应用程序中的任何位置调用nodemailer,而无需重新创建传输器。我怎么做到这一点,我以为我只需要把它放在app.js然后它就可以了。我正在使用mailgun-nodemailer。
app.js
var auth = {
auth: {
api_key: 'key-XXXXX',
domain: 'XXXXX.mailgun.org'
}
}
var mailgun = nodemailer.createTransport(mg(auth));
acontroller.js
mailgun.sendMail(mailOptions, function(err) {
req.flash('success', { msg: 'Success! Your password has been changed.' });
done(err);
});
答案 0 :(得分:2)
只需删除关键字var
并改为使用global
,这样您mailgun
就是全球性的。
您还需要在应用程序开始时使用require('app.js')
加载文件。 (在你需要打电话之前,所以基本上当你开始表达时我会说)
var auth = {
auth: {
api_key: 'key-XXXXX',
domain: 'XXXXX.mailgun.org'
}
}
global.mailgun = nodemailer.createTransport(mg(auth));
请注意,您也可以使用module.exports.mailgun = nodemailer.createTransport(mg(auth))
,然后使用
require('app.js').mailgun.sendMail(mailOptions, function(err) {
req.flash('success', { msg: 'Success! Your password has been changed.' });
done(err);
});
在这种情况下,我建议您将文件app.js
重命名为mailgun.js
,更有意义。
所以有两种方式,无论是全局var还是使用通常的node.js require函数,按你的意愿做,我们通常使用require
方式,但如果你不想担心那么使用全局var的路径是有意义的。