全局节点设置

时间:2015-04-28 09:58:05

标签: node.js express mailgun nodemailer

请原谅我,如果我用错误的术语来描述我的问题,请纠正我。我正在开发节点和表达。我希望能够从我的应用程序中的任何位置调用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);
  });

1 个答案:

答案 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的路径是有意义的。