Допустим, я определил следующие промежуточные и маршрутные обработчика:Express.js: вызывает ли вызов (ошибка) от обработчика маршрута глобальное связывание с ошибками?
app.use(function(err,req,res,next) {
res.status(500).send('Something broke!');
});
app.get('/test',function(req,res) {
//some error happens here, and ther "error" object is defined
next(error);
});
Doe обработка ошибки промежуточной дозвонилась?
Если нет, то обработка промежуточного слоя ошибки можно назвать, если
- обработка ошибок промежуточного слоя была определена НИЖЕ обработчика маршрута?
- Я использую
throw error;
вместоnext(error);
? - оба эти слова верны?
Или я должен делать что-то вроде этого:
//route.js
module.exports=function(req,res,next) {
//error happens here
next(error);
}
//errorHandler.js
module.exports=function(err,req,res,next) {
res.status(500).send('Something broke!');
}
//app.js
var route=require('route');
var errorHandler=require('erorHandler');
app.get('/test',[route,errorHandler]);
Я немного смущен прямо сейчас ...
Ах, так что в следующем (ошибка) будет идти в ошибку обработки промежуточного уровня, даже если он не определено в маршруте, что такое «следующий»? – Alex
О, извините, это опечатка, 'next' должна быть в функции обратного вызова' app.get ('/ test', function (req, res, next) 'иначе вы получите ошибку' 'next" не является функцией ' – Molda
Будет ли 'next (error)' игнорировать промежуточное программное обеспечение с символом '' req, res, next '' и перейти прямо к следующему промежуточному программному обеспечению с '' ошибкой, req, res, next ''? – Alex