在 Express 中使用中间件导致 404

Using Middle ware cause 404 in Express

我正在使用 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, res, next) {
    //Some functions here
      next()
    })
  }

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

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

我会得到 404。知道它有什么问题吗?

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

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

如果你做你正在做的事情

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

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