如何捕获像EADDRINUSE的node.js / express服务器错误?
这是我的代码(这是coffeescript和使用的颜色,但这是不相关的)
# If this module is executed if !module.parent # Start server 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_server
是一个express.js服务器 。 我很难理解为什么由于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错误。
监听服务器上的error
事件
hons_server.on 'error', (err) -> console.log 'there was an error:', err.message
接受的解决scheme不适用于nodejs 0.8.22和3.1.0。
这个诀窍:
process.on('uncaughtException', function(err) { if(err.errno === 'EADDRINUSE') console.log(...); else console.log(err); process.exit(1); });
另请参阅Node.js Express应用程序处理启动错误