У меня есть простой express сервер, на котором запрос POST запускает длительное задание и возвращает идентификатор задания. Сервер контролирует состояние задания, и клиент может со временем запросить состояние задания. Я делаю это с child_process.spawn и получаю обратные вызовы для обычных событий child_process.
Иногда во время выполнения задания возникает исключение, спустя долгое время после первоначального запроса «start job». Это вызывает мою ошибку обратного вызова, но что тогда? Я не могу выбросить там ApiError, потому что express не справится с этим - я получу UnhandledPromiseRejectionWarning (который в будущей версии node.js завершит процесс).
Есть ли способ установить "глобальный обработчик ошибок" для express, который бы использовал попытку / перехват всего сервера?
Простой пример будет выглядеть примерно так:
app.post('/testing', (req, res) => {
setTimeout(() => { raise new ApiError('oops!') }, 1000)
})