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

Express.js项目car与hotel路由突发404错误求助

问题排查与解决方案

核心问题1:路由挂载路径缺少开头斜杠

查看你app.js中的路由挂载代码,hotels和cars的挂载路径未以/开头:

app.use('hotels/v1',hotels)
app.use('cars/v1',cars)

Express中,不以/开头的挂载路径会被当作相对路径处理,会和之前的中间件路径拼接,导致实际生效的路由并非你预期的/hotels/v1和/cars/v1,这是触发404错误的主要原因。而正常工作的/events/v1和/buses/v1均为以/开头的绝对路径,所以能正常匹配。

核心问题2:Car路由的参数路径格式错误

在car路由文件中,参数路由的格式存在问题:

router.route('/car:id').put(upCar).delete(delCar).get(get1Car)

:id参数前缺少/,正确格式应为/car/:id,否则Express会将car:id视为完整路径段,无法正确解析id参数,即使路径匹配成功,后续也会出现参数获取失败的问题。


解决方案

1. 修正路由挂载路径

在app.js中给hotels和cars的挂载路径添加开头的/:

// 修正后代码
app.use('/hotels/v1',hotels)
app.use('/cars/v1',cars)

2. 修正Car路由的参数路径

修改car路由文件中的参数路由:

// 修正后代码
router.route('/car/:id').put(upCar).delete(delCar).get(get1Car)

验证步骤

  1. 重启Express服务
  2. 在Postman中重新请求/cars/v1/car和/hotels/v1/[对应子路径],确认404错误消失
  3. 测试/cars/v1/car/[具体ID],验证参数是否能正常获取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:02:15