Подтвердить что ты не робот

Как поймать ошибки node.js/express сервера, такие как EADDRINUSE?

Это мой код (он coffeescript и использует цвета, но это не относится)

# 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 является express.js сервером. Мне сложно понять, почему ошибки, возникающие в результате hons_server.listen(), не попадают в try/catch. Когда я запускаю свой сервер дважды, я получаю вывод:

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

Я хотел бы знать, почему эта ошибка не была обнаружена, и как/где я могу уловить ошибку EADDRINUSE.

4b9b3361

Ответ 1

Слушайте событие error на сервере isntance

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