2012-03-03 26 views
24

Đây là mã của tôi (coffeescript Nó và sử dụng màu sắc nhưng điều đó không có liên quan)Làm cách nào để nhận lỗi máy chủ node.js/express như EADDRINUSE?

# 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 là một express.js server. Tôi đang gặp khó khăn trong việc hiểu tại sao lỗi được đưa ra là kết quả của hons_server.listen() không bị bắt gặp bởi try/catch. Khi tôi chạy máy chủ của tôi hai lần tôi nhận được kết quả đầu ra:

 
$ 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) 

Tôi muốn biết tại sao lỗi bị ném không bị bắt và cách/nơi tôi có thể bắt lỗi EADDRINUSE.

Trả lời

17

Nghe cho sự kiện error trên máy chủ isntance

hons_server.on 'error', (err) -> 
    console.log 'there was an error:', err.message 
+0

Ra khỏi tò mò, làm thế nào bạn có biết rằng? Tôi biết nó không có trong [tài liệu] (http://expressjs.com/guide.html) và tôi không thể tìm thấy bất cứ điều gì mà sự kiện máy chủ tốc độ hỗ trợ – Hubro

+3

Về cơ bản, máy chủ tốc hành là [http Server] (http://nodejs.org/docs/latest/api/http.html#http_class_http_server), là bộ phát sự kiện. –

+0

Điều này vẫn hoạt động trong phiên bản Node mới nhất? Vui lòng xem câu trả lời bên dưới và cập nhật câu trả lời của bạn nếu cần. – Hubro

22

Các giải pháp chấp nhận không làm việc cho tôi trên nodejs 0.8.22 và thể hiện 3.1.0.

này đã làm các trick:

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

Xem thêm Node.js Express app handle startup errors

+0

vâng, cảm ơn. – qodeninja

Các vấn đề liên quan