我有以下中间件只能调用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
就会这样做)
答案 0 :(得分:1)
您正在导出一个在调用时返回中间件函数的函数。您必须调用该外部函数来获取中间件函数。你没有打电话给它。
所以,你将一个函数作为中间件传递,它只返回另一个从未被调用的函数,因此它永远不会调用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()
});