Middleware зависает - PullRequest
       10

Middleware зависает

0 голосов
/ 25 мая 2018

У меня есть следующее промежуточное ПО, которое ничего не делает, кроме вызова next():

export default function (options) {
  return function (req, res, next) {
    next()
  };
}

Я пытаюсь использовать его следующим образом:

import mymiddleware from '../middlewares/mymiddleware';

router.post('/', mymiddleware, function(req, res, next) {
  res.status(200).send()
});

Когда я публикую сообщение наМаршрут просто висит.Я ожидаю, что это вернется, просто верните 200 OK (что происходит, если я удаляю mymiddleware из моего маршрута)

1 Ответ

0 голосов
/ 25 мая 2018

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

Итак, вы передаете функцию в качестве промежуточного программного обеспечения, которая просто возвращает другую функцию, которая никогда не вызывается, поэтому, таким образом, она никогда не вызывает next(), и, таким образом, ваш маршрут кажется просто застрявшим.

Выможно исправить двумя способами.Во-первых, вы можете изменить свой экспорт, чтобы просто экспортировать прямую функцию промежуточного программного обеспечения:

export default function (req, res, next) {
    next()
}

Или, во-вторых, если вам нужно сохранить вложенную архитектуру, чтобы вы могли передавать ей параметры при ее использовании, вы должны на самом деле вызватьи передайте ему необходимые параметры:

import mymiddleware from '../middlewares/mymiddleware';

router.post('/', mymiddleware(someOptions), function(req, res, next) {
  res.status(200).send()
});
...