method - ¿Cómo atrapo node.js/express server errors como EADDRINUSE?
node js async await error handling (2)
Escuche el evento de error
en el servidor isntance
hons_server.on ''error'', (err) ->
console.log ''there was an error:'', err.message
Este es mi código (es coffeescript y usa colores pero eso no es relevante)
# 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
es un servidor express.js . Me está costando entender por qué los errores lanzados como resultado de hons_server.listen()
no son detectados por try / catch. Cuando ejecuto mi servidor dos veces obtengo el resultado:
$ 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)
Me gustaría saber por qué no se detecta el error arrojado y cómo / dónde puedo detectar el error EADDRINUSE.
La solución aceptada no funcionó para mí en nodejs 0.8.22 y express 3.1.0.
Esto hizo el truco:
process.on(''uncaughtException'', function(err) {
if(err.errno === ''EADDRINUSE'')
console.log(...);
else
console.log(err);
process.exit(1);
});
Consulte también Errores de inicio de la aplicación Express Node.js Express