This is my code.
if !module.parent
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 is an express.js server. I'm having a hard time understanding why errors thrown as a result of hons_server.listen() aren't caught by the try/catch. When I run my server twice I get the output:
$ 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)
I'd like to know why the thrown error isn't caught, and how/where I can catch the EADDRINUSE error.
Express Overview Express is a minimal and flexible Node.js web application framework that provides a robust set of features to develop web and mobile applications. It facilitates the rapid development of Node based Web applications.
The accepted solution did not work for me on nodejs 0.8.22 and express 3.1.0.
This did the trick:
process.on('uncaughtException', function(err) {
if(err.errno === 'EADDRINUSE')
console.log(...);
else
console.log(err);
process.exit(1);
});
Also see Node.js Express app handle startup errors
Listen for the error event on the server isntance
hons_server.on 'error', (err) ->
console.log 'there was an error:', err.message
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With