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