全局节点设置

Global node settings

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

只需删除关键字 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,这样更有意义。

所以有两种方法,要么是全局变量,要么使用通常的 node.js require 函数,随心所欲,我们通常使用 require 方式,但如果你不想担心路径然后使用全局变量是有道理的。