簡體   English   中英

server.listen回調未在錯誤時被調用?

[英]server.listen callback not being called on error?

  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

可以像下面這樣使用

server.listen(9000, 'localhost', function() {
    console.log('listening at http://%s:%s', 'localhost', 9000);
}).on('error', (e) => {
    console.error(e.message);
    throw e;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM