await new Promise((resolve, reject) => {
console.log('before');
server.listen(port, err => {
console.log('after');
if (err) {
reject(err);
}
resolve();
});
});
结果:
before
[ ✘ error ] Application encountered an unexpected error, exiting
2017-02-01T12:38:46.071Z /home/karlm/dev/node/project/src/index.js:21:19
[ ✘ error ] { Error: listen EADDRINUSE :::3030
at Object.exports._errnoException (util.js:1022:11)
at exports._exceptionWithHostPort (util.js:1045:20)
正如您所看到的,打印了before
,但没有打印after
?好像崩溃了,没有调用回调?
最佳答案
解决方案:
await new Promise((resolve, reject) => {
server.listen(port, () => {
resolve();
}).on('error', (err) => {
reject(err);
});
});
文档并没有真正暗示我必须使用 on
。
关于node.js - server.listen 回调未因错误而被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41980181/