node.js - server.listen 回调未因错误而被调用?

标签 node.js express

  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/

相关文章:

html - 如何链接到 Node 内的文件目录?

javascript - 对数组中的所有值运行查找查询

javascript - 具有多个 ID 的 Rest API 资源命名

node.js - webpack +express.js 不加载bundle.js

node.js - 使用 actions-on-google Carousel 或 List 与dialogflow 的 WebhookClient 时出错

node.js - 连接 mongodb 中的两个集合

javascript - 递归函数完成后退出node.js

javascript - Grunt 构建导致 Angular 应用程序在 dist 上崩溃

node.js - 如何: Execute infinite scroll using AngularJS and change route on every new post

javascript - 在 Node 中创建错误/结果函数