2014-12-11 2 views
0

В моем приложении я хочу проверить некоторые параметры некоторого маршрута. Тогда, если это недействительно, я хочу поймать ошибку с next(err) и преобразовать ее в какой-то формат протокола. Посмотрите на код:Как уловить ошибки `.param` callback в express.js?

app = express(); 

router = express.Router(); 

router.param("id", function(req, res, next, id) { 
    // something went wrong and we are: 
    next(new Error("Bad ID")); 
}); 

router.get("/some/route/to/:id", function(...) {...}); 

router.use(function(error, req, res, next) { 
    // here I want to get the "Bad ID" error, 
    // but instead, this middleware is not invoked 
}); 

app.use(router); 

app.use(function(err, req, res, next) { 
    // and this middleware finally catches "Bad ID" error.. 
}); 

Любые идеи?

+0

Я поднял [выпуск] (https: // github.com/strongloop/express/issues/2483). –

ответ

0

не пытался бежать, но она выглядит правильно ...

Попробуйте следующее: app.param вместо router.param или router.use(error middleware) вместо app.use(...)

+0

Я использую 'router.param' и' router.use', * then *, 'app.use'. И в стеке 'router.use' не поймал ошибку, но' app.use' сделал .. = ( – gobwas

Смежные вопросы