我如何捕获node.js / express服务器错误,例如EADDRINUSE?

问题描述 投票:29回答:2

这是我的代码。

if !module.parent
    try
        hons_server.listen config.port
        console.log 'Listening to port ' + config.port
    catch err
        console.error "Couldn't start server: #{String(err)}".red

hons_serverexpress.js server。我很难理解为什么hons_server.listen()引发的错误不会被try / catch捕获。当我运行服务器两次时,我得到的输出是:

$ coffee src / server.coffee监听9090端口node.js:201抛出e; // process.nextTick错误,或在第一次滴答中出现“错误”事件^错误:收听EADDRINUSE在errnoException(net.js:632:11)在Array.0(net.js:733:26)在EventEmitter._tickCallback(node.js:192:40)

我想知道为什么未捕获引发的错误,以及如何/在何处捕获EADDRINUSE错误。

node.js express error-handling coffeescript
2个回答
21
投票
hons_server.on 'error', (err) -> console.log 'there was an error:', err.message

25
投票
这成功了:

process.on('uncaughtException', function(err) { if(err.errno === 'EADDRINUSE') console.log(...); else console.log(err); process.exit(1); });

另请参阅Node.js Express app handle startup errors

© www.soinside.com 2019 - 2024. All rights reserved.