如何使用第二种情况的节点js代码块?

首先,让我更具体一些。 我在我的网站有联系页面的节点编码器代码设置,它工作得很好。 但是,我有另一个页面,服务,我有另一种forms,并希望使用此页面的以前的设置代码以及我能够发送提交的信息作为电子邮件。 我试图做另一个文件,并粘贴相同的代码,但命名variables,如app2transporter2等。 但它不会工作。 我是nodejs开发的初学者,所以我需要帮助。 什么是最好的方法来实现呢?

顺便一提; 联系人,服务页面和app.js(nodejs代码)文件位于根文件夹中。

节点js:

 const express = require('express'); const bodyParser = require('body-parser'); const exphbs = require('express-handlebars'); const path = require('path'); const nodemailer = require('nodemailer'); const app = express(); // View engine setup app.engine('handlebars', exphbs()); app.set('view engine', 'handlebars'); // Static folder app.use('/public', express.static(path.join(__dirname, 'public'))); app.use('/', express.static(path.join(__dirname, ''))); // Body Parser Middleware app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.get('/', (req, res) => { res.render('contact'); }); app.post('/send', (req, res) => { const output = ` <ul> <li>Name: ${req.body.name}</li> <li>Email: ${req.body.email}</li> <li>Phone: ${req.body.phone}</li> </ul> `; // create reusable transporter object using the default SMTP transport let transporter = nodemailer.createTransport({ service: 'gmail', port: 25, secure: false, // true for 465, false for other ports auth: { user: 'email', // senders email pass: 'password' // senders password }, tls:{ rejectUnauthorized:false } }); // setup email data with raw html let mailOptions = { from: '"xyz" <xyz@info.com>', // sender address to: req.body.email, // receiver or receivers subject: 'xyz', // Subject line html: output // html body }; // send mail with defined transport object transporter.sendMail(mailOptions, (error, info) => { if (error) { return console.log(error); } console.log('Message sent: %s', info.messageId); console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info)); res.render('contact', {msg:'Your contact message has successfully sent to us.'}); }); }); app.listen(3000, () => console.log('Server started...')); 

为什么,你创build一个模块。 https://nodejs.org/api/modules.html

 //yourModule.js const sendMail = (email, output) => new Promise((resolve, reject) => { //your code to send mail. //resolve the promise }) module.exports { sendMail } 

然后,只要你需要,

 const emailModule = require('myModuleName'); emailModule.sendMail('some@mail.com', output).then(() => { //whatever }).catch(catchErrFn)