Это мой код (это CoffeeScript и использует цвета, но это не имеет значения)Как уловить ошибки node.js/express сервера, такие как 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
является express.js server. Мне трудно понять, почему ошибки, вызванные в результате 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.
из любопытства, как вы знаете, что? Я знаю, что это было не в [документации] (http://expressjs.com/guide.html), и я не могу найти ничего, на каких событиях поддерживает экспресс-сервер – Hubro
. В принципе, экспресс-сервер является [http Server] (http://nodejs.org/docs/latest/api/http.html#http_class_http_server), который является эмитентом событий. –
Это все еще работает в новейшей версии узла? Пожалуйста, ознакомьтесь с приведенным ниже ответом и при необходимости обновите свои данные. – Hubro