中间件挂了

Middleware hangs

我有以下中间件,除了调用 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()
});

当我post到路由时它就挂了。我希望这 return 只是 return 一个 200 OK(如果我从我的路线中删除 mymiddleware 它会这样做)

您正在导出一个函数,该函数在被调用时 returns 是一个中间件函数。您必须调用该外部函数才能获得中间件函数。你不是在调用它。

因此,您传递的函数作为中间件只是 returns 另一个从未调用过的函数,因此它永远不会调用 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()
});