Node Express "res.send не является функцией" при использовании в промежуточном программном обеспечении - PullRequest
0 голосов
/ 10 мая 2019

Мой код выглядит следующим образом:

const myMiddleware = () => {
   return (req, res, next) => {
    ...
    console.log(res);// this outputs only the locals set in a previous middleware
    res.send('not working');//send is not a function
  }
}

и его использование:

router.post('/route', previousMiddleware(), myMiddleware(), (req, res) => {
  doSomeStuff;
})

Предыдущее промежуточное ПО выполняет запрос https, устанавливает результаты в res.locals, затемmyMiddleware выполняет другой запрос в другом месте, используя данные из предыдущего промежуточного программного обеспечения.Мне нужно выйти из всего маршрута, если есть ошибка в промежуточном программном обеспечении.Он работает в первой (предыдущей) функции промежуточного программного обеспечения, но не во второй.Когда я выхожу из системы res в предыдущем промежуточном программном обеспечении, даже после установки локальных настроек, он дает мне весь объект методом .send.Если я зарегистрирую res в первой строке функции myMiddleware() (или где-либо еще), res - это объект с единственным свойством объекта, равным .locals из предыдущего промежуточного программного обеспечения:

{ locals: { key: value } }

Я трижды проверил, и у меня нет порядка req, res, next, перепутанного.

Есть мысли о том, почему и как я могу это исправить?

1 Ответ

0 голосов
/ 10 мая 2019

Вы должны передать их имена, а не вызывать их напрямую в маршрутизаторе.

router.post('/route', previousMiddleware, myMiddleware, (req, res) => {
    doSomeStuff;
})

Поскольку это промежуточное ПО будет вызываться при отправке запроса на сервер, а не при инициализации сервера.

...