如何捕获node.js/express服务器错误,如EADDRINUSE?
这是我的密码如何捕获node.js/express服务器错误,如EADDRINUSE?,node.js,express,error-handling,coffeescript,Node.js,Express,Error Handling,Coffeescript,这是我的密码 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 荣誉服务器是一个。我很难理解为什么try/catch无法捕获由hons\u serv
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
荣誉服务器
是一个。我很难理解为什么try/catch无法捕获由hons\u server.listen()引发的错误。当我运行服务器两次时,会得到以下输出:
$ coffee src/server.coffee
Listening to port 9090
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: listen EADDRINUSE
at errnoException (net.js:632:11)
at Array.0 (net.js:733:26)
at EventEmitter._tickCallback (node.js:192:40)
$coffee src/server.coffee
监听端口9090
node.js:201
抛出e;//process.nextTick错误,或第一次勾选时的“error”事件
^
错误:请使用侦听器
在errnoException(net.js:632:11)
at Array.0(net.js:733:26)
在EventEmitter上进行回调(node.js:192:40)
我想知道为什么没有捕获抛出的错误,以及如何/在何处捕获EADDRINUSE错误。在服务器上侦听
错误事件
hons_server.on 'error', (err) ->
console.log 'there was an error:', err.message
接受的解决方案在nodejs 0.8.22和express 3.1.0上对我不起作用
这就成功了:
process.on('uncaughtException', function(err) {
if(err.errno === 'EADDRINUSE')
console.log(...);
else
console.log(err);
process.exit(1);
});
出于好奇,你是怎么知道的?我知道它不在,也找不到express server支持哪些事件基本上,express server是,它是一个事件发射器。这在最新版本的Node中仍然有效吗?请检查下面的答案,并在需要时更新您的答案。它仍然有效。从express 3.0.0及以后,express对象不再从http.Server
继承,它只是一个插入服务器的函数。error
事件必须从服务器对象而不是express函数监听。我希望expressserver.listen(function(err){…}
回调能够支持错误检查,但是这个监听类似server.on('error',function(err){…})的事件的建议非常有效