我的Index.js中有此代码。
var express = require('express');
var router = express.Router();
var check = require('../nodemailer/check.js');
const nodemailer = require('nodemailer');
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.get('/checkemail', function(req, res, next) {
var email = 'email';
console.log(email);
check.transporter.sendMail(mailOptions, function(error, info) {
if (error) {
return console.log(error);
}
console.log('Message sent: %s', info.messageId);
module.exports.email= email;
//console.log(module.exports.email);
});
res.render('checkemail', { title: 'check' });
});
module.exports = router;
这在我的check.js中
var nodemailer = require('nodemailer');
var rter = require('../routes/index.js');
//var dho = rter.email;
console.log(rter.email)
var transporter = nodemailer.createTransport({
host: 'server206.web-hosting.com',
port: 26,
secure: false, // true for 465, false for other ports
auth: {
user: 'noreply@swiftcircle.website', // generated ethereal
pass: 'Miracle1994' // generated ethereal password } });
}
});
var mailOptions = {
from: 'noreply@swiftcircle.website',
to: rter, // list of receivers
subject: 'Hello', // Subject line
//text: 'Hello world?', // plain text body
html: '<b>Hello world?</b>' // html body
};
我成功地从索引中导出了变量'email',但是当我尝试导入时,它在check.js中显示为未定义...
在代码中,我导出了变量电子邮件,然后在check.js中使用“ .property”将其要求并尝试进行console.log,但返回了“ undefined”,我在做什么错了?
答案 0 :(得分:0)
问题发生在模块的require
相互缠绕的情况下。
index.js
模块需要第4行的check.js
模块;然后check.js
模块在第2行中需要index.js
模块。
这将阻止check.js
模块访问index.js
模块中的导出变量。
您可能应该考虑如何重构代码,以便以其他方式访问您要访问的email
属性(例如,通过使用实用程序模块来获得{{ 1}}属性设置并在适当的时间读取。
答案 1 :(得分:0)
我现在知道了!这就是我的方法...
exports.mail = function mail(x){
//my codes in my check.js
}
然后,我像这样将其导入到index.js中...
var check = require('../nodemailer/check.js);
check.mail(email);
成功了!