node.js - 在 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。任何想法有什么问题吗?
解决方案
您想在声明 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,因为从未收到任何响应。
推荐阅读
- javascript - 将 16 位缩放 PCM 数据转换为浮点 PCM 数据 C++
- actions-on-google - 帐号关联授权网址
- python - 从过程调用 cx_oracle python 获取结果数据
- python - 从另一个注入的对象创建一个对象会破坏依赖注入吗?
- wordpress - WooCommerce Rest api 创建/更新产品变化问题
- reactjs - React 三元运算符首先显示“:”块。为什么?
- java - 为什么我的代码绕过了我的 else if 语句?
- java - 使用 Instant.parse 解析 2018-05-01T00:00:00 日期时出错
- android - 如何通过向下滚动来增加片段的高度?
- jquery - 如何在js树中同时显示颜色和删除线?