Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点+;快速使用NodeEmailer应用程序范围_Node.js_Express_Nodemailer - Fatal编程技术网

Node.js 节点+;快速使用NodeEmailer应用程序范围

Node.js 节点+;快速使用NodeEmailer应用程序范围,node.js,express,nodemailer,Node.js,Express,Nodemailer,我正在尝试在现有应用程序上设置NodeEmailr。我正在尝试在我的主app.ts上设置NodeEmailer配置,然后在应用程序范围内使用它在需要的地方发送邮件。这是我的应用程序中的内容。ts: import * as mailer from 'nodemailer'; const app = express(); dotenv.load({ path: '.env' }); app.set('port', (process.env.PORT || 3000)); app.use(b

我正在尝试在现有应用程序上设置NodeEmailr。我正在尝试在我的主
app.ts
上设置NodeEmailer配置,然后在应用程序范围内使用它在需要的地方发送邮件。这是我的
应用程序中的内容。ts

import * as mailer from 'nodemailer';

const app = express();
dotenv.load({ path: '.env' });
app.set('port', (process.env.PORT || 3000));    
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

let mongodbURI = process.env.MONGODB_URI;    
mongoose.Promise = global.Promise;
const mongodb = mongoose.connect(mongodbURI, { useMongoClient: true });

var mailConfig = {
  host: process.env.MAIL_HOST,
  port: process.env.MAIL_PORT,
  auth: {
    user: process.env.MAIL_USERNAME,
    pass: process.env.MAIL_PASSWORD
  }
};
let transporter = mailer.createTransport(mailConfig);

mongodb
  .then((db) => {
    console.log('Connected to MongoDB on', db.host + ':' + db.port);    
    setRoutes(app);    
    if (!module.parent) {
      app.listen(app.get('port'), () => {
        console.log('API listening on port ' + app.get('port'));
      });
    }    
  })
  .catch((err) => {
    console.error(err);
  });

export { app };

我试过像
app.use(transporter)
app.set('transporter',transporter)
。但这似乎不是一个好办法。我如何在应用程序范围内声明它,并在其他地方(如
控制器/user.ts
)使用该对象?

为您的传输创建一个单独的js文件,并将其导入所需的模块中

transport.js

var mailer = require('nodemailer');
var mailConfig = {
  host: process.env.MAIL_HOST,
  port: process.env.MAIL_PORT,
  auth: {
    user: process.env.MAIL_USERNAME,
    pass: process.env.MAIL_PASSWORD
  }
};

var transporter = mailer.createTransport(mailConfig);

module.exports = transporter;
app.js或您想要使用NodeEmailer的任何其他模块

var transporter = require('./transport');

transporter.sendMail(mailOptions, function(error, info) {
    if (error) {
        //Error
    } else {
        //Success
    }
});

为您的传输创建一个单独的js文件,并将其导入所需的模块中

transport.js

var mailer = require('nodemailer');
var mailConfig = {
  host: process.env.MAIL_HOST,
  port: process.env.MAIL_PORT,
  auth: {
    user: process.env.MAIL_USERNAME,
    pass: process.env.MAIL_PASSWORD
  }
};

var transporter = mailer.createTransport(mailConfig);

module.exports = transporter;
app.js或您想要使用NodeEmailer的任何其他模块

var transporter = require('./transport');

transporter.sendMail(mailOptions, function(error, info) {
    if (error) {
        //Error
    } else {
        //Success
    }
});

将其从app.ts导出并导入控制器。@vibhor1997a是的,我不知道如何操作。您能解释一下吗?我不太确定导入导出语法,因为我使用了旧的require和module.exports从app.ts导入它,然后导入到您的控制器中。@vibhor1997a是的,我不确定如何执行。您能解释一下吗?我不太确定导入导出语法,因为我使用了旧的require和module.exports