Экспресс не отображает ошибку

101
11

У меня есть это:

//public source
app.use('/src', express.static(__dirname + '/../client/source'));

//Errors
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
app.use(function(err, req, res) {
res.status(err.status || 500);
res.end('ERROR 404!');
});

Когда сервер не находит файл, создается сообщение об ошибке и назначается статус 404, а ошибка передается следующей функции. Затем следующая функция выдает фразу ERROR 404! , Но на практике это не работает. На сервере ошибки вернитесь к фразе браузера Error: Not found и stacktrace, указывая на строку с var err = new Error('Not Found'); , res.end получает результата. В чем проблема?

спросил(а) 2015-11-04T15:45:00+03:00 4 года, 8 месяцев назад
1
Решение
66

Ваше промежуточное ПО для обработки ошибок должно иметь значение 4;

app.use(function(err, req, res, next) { // this line
res.status(err.status || 500);
res.end('ERROR 404!');
});

Взгляните на документы:

Средство промежуточного программного обеспечения обработки ошибок имеет значение 4, которое всегда должно поддерживаться для идентификации промежуточного программного обеспечения обработки ошибок. Даже если вам не нужно использовать следующий объект, обязательно укажите его для поддержки подписи, иначе он будет интерпретироваться как обычное промежуточное программное обеспечение и не будет обрабатывать ошибки.

ответил(а) 2015-11-04T15:48:00+03:00 4 года, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема