You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express中baseUrl参数不可用:父路由参数未传递至子路由

为什么父路由的:userId参数无法传递到子路由?

这个问题的核心原因是Express默认会重置子路由的req.params对象,导致父路由的参数无法自动继承到子路由中。

解决方案:开启mergeParams选项

在创建子路由的时候,添加mergeParams: true配置,让子路由继承父路由的参数:

修改photoRoutes.js中的路由创建代码:

const PhotoRoute = Router({ mergeParams: true }); // 加上mergeParams配置

PhotoRoute.get('/', (req, res) => {
  console.log(req.params); // 现在会输出 { userId: '123' }
  res.end();
});
export default PhotoRoute;

原理说明

Express的Router()构造函数默认mergeParams为false,这意味着当子路由被挂载时,它会创建一个新的空req.params对象,只包含子路由自身定义的参数(如果有的话)。而设置mergeParams: true后,子路由会将父路由的req.params与自身的参数合并,这样你就能在子路由中访问到父路由的:userId参数了。

内容的提问来源于stack exchange,提问作者Kousha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:12:56