【发布时间】:2018-03-21 08:56:58
【问题描述】:
我对 Node 比较缺乏经验,有人要求我创建一个 POP3 电子邮件客户端。我能找到的处理 POP3 的最新包是node-poplib-yapc,我一直在玩弄它,看看它是如何工作的。
现在我遇到的问题是我不知道如何使用这个包进行错误处理,我故意给它错误的登录详细信息,以便我可以测试它的错误处理。当我给它正确的凭据时,它似乎工作正常(我已经能够登录和下载电子邮件)所以我怀疑这个包或者我如何调用包有问题。文档也完全不清楚,我能找到的唯一与(我认为是)错误处理相关的内容如下:
连接(回调)
- callback - function(err) //
使用主机名和端口连接到邮件服务器。如果 tls 属性为真,则启动 TLS 连接。然后使用凭据属性用户名和密码登录您的邮箱。
阅读完以上内容后,我尝试了以下方法:
let popClient = require('node-poplib-yapc').Client;
let client = new popClient({ /* my incorrect credentials */ });
client.connect((err) => {
if(err) {
console.log('There was an error');
console.log(err);
}
});
但这不起作用,而是在终端中引发实际错误(我将在下面添加输出)。我还尝试了以下相同的结果:
client.connect(() => {
}, (err) => {
console.log('There was an error');
console.log(err);
});
还有好老的try/catch,也让我失望了:
try {
client.connect(() => {
});
} catch (err) {
console.log(err);
}
这是当我运行上述任何代码时它在终端中引发的错误:
events.js:165
throw er; // Unhandled 'error' event
^
Error: [AUTH] Username and password not accepted.
at Client.onData (/home/lee/github/chatterbox/node_modules/node-poplib-yapc/main.js:97:10)
at TLSSocket.emit (events.js:180:13)
at addChunk (_stream_readable.js:269:12)
at readableAddChunk (_stream_readable.js:256:11)
at TLSSocket.Readable.push (_stream_readable.js:213:10)
at TLSWrap.onread (net.js:578:20)
Emitted 'error' event at:
at Client.onData (/home/lee/github/chatterbox/node_modules/node-poplib-yapc/main.js:107:10)
at TLSSocket.emit (events.js:180:13)
[... lines matching original stack trace ...]
at TLSWrap.onread (net.js:578:20)
我也尝试过的最后一件事是:
client.connect(() => {
}).catch(err => {
console.log('There was an error');
console.log(err);
});
导致以下错误:
/home/lee/github/chatterbox/service/email.js:29
}).catch(err => {
^
TypeError: Cannot read property 'catch' of undefined
at Object.getMail (/home/lee/github/chatterbox/service/email.js:29:5)
at accounts.forEach (/home/lee/github/chatterbox/app.js:17:11)
at Array.forEach (<anonymous>)
at main (/home/lee/github/chatterbox/app.js:16:12)
at Object.<anonymous> (/home/lee/github/chatterbox/app.js:27:1)
at Module._compile (module.js:649:30)
at Object.Module._extensions..js (module.js:660:10)
at Module.load (module.js:561:32)
at tryModuleLoad (module.js:501:12)
at Function.Module._load (module.js:493:3)
如果有人可以帮我解决如何正确处理此类软件包的错误,我将不胜感激。显然,首选处理任何和所有错误(不仅仅是身份验证错误)的解决方案,但实际上任何能够为我指明正确方向的东西都会有很大帮助。
【问题讨论】: