這是我的代碼(它的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