首页 > 解决方案 > 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

标签: node.jsexpress

解决方案


这两个端点不是由一个请求在您的代码中触发的。第一个请求必须next()在第二个请求被调用之前调用。

另外,请求app.get("/", ...)时根本没有命中。/something

这对 是正确的app.use("/", ...),但对 不是app.get("/", ...)

正如我在评论中所说,这个问题中的任何代码都不会触发headers already sent错误,因为这两个请求中只有一个有机会运行。

该错误来自您尚未披露的其他内容,它必须是在同一请求处理程序中的两个位置发送响应的请求,或者它来自既发送响应又调用next()以允许其他请求处理程序的请求处理程序然后运行并发送另一个响应。


推荐阅读