This is my code (It's coffeescript and uses colors but that's not relevant)
# 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
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.
The accepted solution did not work for me on nodejs 0.8.22 and express 3.1.0.
This did the trick:
Also see Node.js Express app handle startup errors
Listen for the
error
event on the server isntance