这是我的代码(它的CoffeeScript中并使用颜色区分,但是这是不相关)如何捕获像EADDRINUSE这样的node.js/express服务器错误?
# 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 server。我很难理解为什么由于hons_server.listen()
引发的错误没有被try/catch捕获。当我运行我的服务器我两次得到的输出:
$ 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)
我想知道为什么没有抓到抛出错误,以及如何/我在哪里可以赶上EADDRINUSE错误。
出于好奇,你是怎么知道的?我知道这不是[文档](http://expressjs.com/guide.html),我无法找到任何关于快速服务器支持的事件 – Hubro 2012-03-03 10:02:40
基本上,快速服务器是[http服务器] (http://nodejs.org/docs/latest/api/http.html#http_class_http_server),这是一个事件发布器。 – 2012-03-03 10:43:37
这是否仍然在最新版本的Node中工作?请检查下面的答案,并在需要时更新你的答案。 – Hubro 2013-05-13 13:28:34