问题描述
我正在将express.js与express路由器一起使用。我的文件如下:
./路由器 -> api.js
./控制器 -> ApiController.js
在api.js
内部,我将请求发送到ApiController。看起来像这样:
router.get('/',ApiController.home)
在内部控制器中,它看起来像这样:
exports.home = (req,res,next)=>{res.send('hello') }
我有这样的中间件:
function authenticate(req,next) {
//Some functions here
next()
})
}
如果我更改控制器并添加中间件,如下所示:
exports.home = authenticate,(req,res)=>{res.send('hello') }
我会得到404。任何想法有什么问题吗?
解决方法
您要在声明获取路由器时添加中间件
router.get('/',authenticate,ApiController.home)
如果您正在做自己的事
exports.home = authenticate,(req,res)=>{res.send('hello') }
这基本上是说export.home =进行身份验证,并忽略具有res.send的函数。因此,当您单击exports.home函数时,它将仅具有next(),而不会重新发送给客户端。下一个将使请求通过,它将到达最后一个错误处理程序,该错误处理程序将向您返回404,因为从未收到响应。