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

Express调用next('route')跳转后路由参数返回undefined问题排查

问题原因说明

你访问/user/lai时未触发next('route'),调用无参数的next()只会执行当前路由的下一个处理函数,沿用第一个路由定义的参数名:uid,所以取值正常。
访问/user/lai9fox时出现undefined是两个因素共同导致的:

  • 第一,next('route')的生效逻辑:Express中调用next('route')时,会终止当前路由的所有后续处理函数执行,转而匹配后续注册的、路径规则符合当前请求的其他路由。你访问/user/lai9fox时命中了第一个路由的判断逻辑,触发next('route'),所以执行权会落到第二个/user/:id的路由处理函数中。
  • 第二,路由参数命名不匹配:第二个路由的路径参数你定义的是:id,Express会将路径中对应位置的值存入req.params.id,你在第二个路由的响应逻辑里取的是不存在的req.params.uid,自然返回undefined。

修复方案

两种方案任选其一即可:

  1. 统一两个路由的参数命名,将第二个路由的参数名改为:uid:
app.get('/user/:uid', (req, res, next) => {
  res.send(`<h1>Welcome you, ${req.params.uid} !</h1>`)
})
  1. 保持第二个路由参数名:id不变,调整取值逻辑取req.params.id:
app.get('/user/:id', (req, res, next) => {
  res.send(`<h1>Welcome you, ${req.params.id} !</h1>`)
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:06:03