node.js - Express 一次请求触发两条路由
问题描述
我有路线/
,并且/:itemId
- 当通过邮递员发送请求时,两条路线都会被触发。
const router = Router();
router.get('/', (req, res) => res.json({ok: true});
router.get('/:itemId', (req, res) => res.json({okk: true});
不确定,我做错了什么。
端点/
总是返回一个响应,而第二个正在返回Cannot set headers after they are sent to the client
快捷版:^4.15.4
解决方案
这两个端点不是由一个请求在您的代码中触发的。第一个请求必须next()
在第二个请求被调用之前调用。
另外,请求app.get("/", ...)
时根本没有命中。/something
这对 是正确的app.use("/", ...)
,但对 不是app.get("/", ...)
。
正如我在评论中所说,这个问题中的任何代码都不会触发headers already sent
错误,因为这两个请求中只有一个有机会运行。
该错误来自您尚未披露的其他内容,它必须是在同一请求处理程序中的两个位置发送响应的请求,或者它来自既发送响应又调用next()
以允许其他请求处理程序的请求处理程序然后运行并发送另一个响应。
推荐阅读
- javascript - 在函数之前执行 DataTables ajax.reload() Async
- ios - 如何使用 codemagic.io 在我的 iPhone 上测试 Flutter 应用程序
- c# - 带有实例变量的 Lambda 是如何工作的?
- java - 错误:java.lang.ArrayIndexOutOfBoundsException:索引 4 超出长度 4 的范围
- javascript - 使用 npm 导入 Three.js
- flutter - 我的颤振项目中不存在 Mainactivity.java 或 Katlin 文件夹文件
- excel - 我想将合并的 excel 文件中的考试成绩输入数字列
- r - R中的华夫饼图:图例文本仅由“A”、“B”、“C”组成;如何改变?
- github - GitHub页面显示自述文件而不是index.html,但仅在提到html文件的完整路径时才有效
- windows - 如何通过 localhost 代理允许重新验证