To jest mój kod (to coffeescript i używa kolorów, ale to nie jest istotne)Jak przechwycić błędy serwera node.js/express, takie jak 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
jest express.js server. Trudno mi zrozumieć, dlaczego błędy rzucane w wyniku hons_server.listen()
nie są przechwytywane przez próbę/catch. Kiedy uruchomić mój serwer dwukrotnie pojawia się komunikat:
$ 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)
chciałbym wiedzieć dlaczego wyrzucony błąd nie zostanie złapany, i jak/gdzie mogę złapać błąd EADDRINUSE.
z ciekawości, skąd wiesz, że? Wiem, że nie było go w [dokumentacji] (http://expressjs.com/guide.html) i nie mogę znaleźć niczego na temat zdarzeń obsługiwanych przez serwer ekspresowy – Hubro
Zasadniczo, serwer ekspresowy to [serwer http] (http://nodejs.org/docs/latest/api/http.html#http_class_http_server), który jest emiterem zdarzeń. –
Czy to nadal działa w najnowszej wersji węzła? Sprawdź poniższą odpowiedź iw razie potrzeby zaktualizuj swoją. – Hubro