【发布时间】:2016-08-28 07:59:05
【问题描述】:
我想定期使用 Node 守护程序从邮箱中获取邮件。对连接方法的调用是在app.js 中进行的。
我用来连接邮箱的javascript文件(mail.js):
var imap = new Imap({
user: 'xxxx@hotmail.com',
password: config.get.gmail_password,
host: 'xxxxx',
port: 993,
tls: true
});
var fetchMail = function()
{
console.log('Connection');
imap.connect();
};
//fetchMail();
imap.once('ready', function() {
console.log('Ready');
imap.search([ 'UNSEEN', ['FROM', 'xxxx'] ], function(err, results)
{
// Do Stuff
}
exports.fetchMail = fetchMail;
如果我直接从mail.js 使用fetchMail(),一切都很好。
但是,当我尝试从app.js 调用它时:
var mail = require('./js/mail');
mail.fetchMail()
然后,该方法保留在来自mail.js 的fetchMail() 函数中,并且永远不会触发imap.once('ready', function())。
我猜这是mail.js 中的imap var 的范围问题。
我该如何解决这个问题?
编辑
我以我不喜欢的方式解决了这个问题。我在fecthMail()function 中写了与 imap var 相关的所有内容。
请不要犹豫,为此写一个更有效的答案。
【问题讨论】:
-
你在
mail.js中尝试过module.exports = fetchMail;吗? -
是的,但是
fetchMail is not a function在app.js中。 -
不在
app.js,你需要先从mail.js导出,然后通过app.js使用require -
是的。这就是我所做的:)
-
很遗憾,没有。
标签: javascript node.js scope