首页 > 解决方案 > 在 Express 中使用中间件导致 404

问题描述

我正在使用 express.js 和 express 路由器。我的文件如下所示:

./路由器 -> api.js

./controllers -> ApiController.js

在里面api.js我将请求发送到 ApiController。它看起来像这样:

router.get('/',ApiController.home)

在控制器内部它看起来像这样:

exports.home = (req,res,next)=>{res.send('hello') }

我有一个这样的中间件:

function authenticate(req, res, next) {
    //Some functions here
      next()
    })
  }

如果我更改我的控制器并添加这样的中间件:

exports.home = authenticate ,(req,res)=>{res.send('hello') }

我会得到 404。任何想法有什么问题吗?

标签: node.jsexpressmiddlewareexpress-jwt

解决方案


您想在声明 get 路由器时添加中间件

 router.get('/', authenticate, ApiController.home)

如果你做你正在做的事

 exports.home = authenticate ,(req,res)=>{res.send('hello') }

这基本上是说exports.home = authenticate 并忽略具有res.send 的函数。因此,当您点击exports.home 函数时,它只会有一个next() 而没有res.send 给客户端。下一个只会使请求通过,它会遇到最后一个错误处理程序,该处理程序会返回 404,因为从未收到任何响应。


推荐阅读