@quex

Из-за чего странное поведение express.use() в Node JS?

app.use(function(req,res,next){ console.log('middleware executed'); next(); });
app.get('/1',function(req,res){ console.log('/1'); res.end(); });
app.get('/2',function(req,res){ console.log('/2'); res.end(); });

Работает как положено. при запросе страниц /1 и /2 мидлвар выполняется в обоих случаях.

Меняем порядок:
app.get('/1',function(req,res){ console.log('/1'); res.end(); });
app.use(function(req,res,next){ console.log('middleware executed'); next(); });
app.get('/2',function(req,res){ console.log('/2'); res.end();});

Мидлвар перестает отрабатывать вовсе, т.е. даже при запросе страницы /2
В чем может быть дело?
  • Вопрос задан
  • 2558 просмотров
Решения вопроса 1
`use` нужно использовать перед маршрутизатором. Из второго примера, когда вы регистрируете `/1` создается маршрутизатор express:application:L409. И когда регистрируется `/2`, то путь добавляется к уже существующему маршрутизатору, который находится перед `use`.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы