Вы должны использовать Node.js domains :
Самый безопасный способ ответить на выданную ошибку - завершить процесс.Конечно, на обычном веб-сервере у вас может быть открыто много подключений, и нет смысла их внезапно закрывать, потому что кто-то еще вызвал ошибку.
Лучше всего отправить ответ об ошибке назапрос, который вызвал ошибку, позволяя остальным закончить в обычное время и прекратить прослушивать новые запросы этого работника.
На связанных страницах приведен пример кода, который я несколько упростил ниже.Это работает как описано выше.Вы должны либо вызывать свой сервер так, чтобы он автоматически перезапускался при его выходе, либо использовать рабочий шаблон из полного примера .
var server = require('http').createServer(function(req, res) {
var d = domain.create();
d.on('error', function(er) {
console.error('error', er.stack);
try {
// make sure we close down within 30 seconds
var killtimer = setTimeout(function() {
process.exit(1);
}, 30000);
// But don't keep the process open just for that!
killtimer.unref();
// stop taking new requests.
server.close();
// try to send an error to the request that triggered the problem
res.statusCode = 500;
res.setHeader('content-type', 'text/plain');
res.end('Oops, there was a problem!\n');
} catch (er2) {
// oh well, not much we can do at this point.
console.error('Error sending 500!', er2.stack);
}
});
// Because req and res were created before this domain existed,
// we need to explicitly add them.
d.add(req);
d.add(res);
// Now run the handler function in the domain.
d.run(function() {
// your application logic goes here
handleRequest(req, res);
});
});