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

Express.js路由读取req.params.id返回404,请求地址出现[object Object]如何解决?

问题修复方案

核心故障原因

报错日志中的[object%20Object]说明请求接口时传入的商品ID是对象类型而非预期的字符串/数值,问题出在React路由参数的取值逻辑:
useParams() 会返回包含所有路由定义参数的对象,你直接把整个对象传给了detailsProduct action,发起请求时对象被强制转成字符串[object Object]拼接到接口地址,最终触发404错误。

修复操作步骤

  • 修正ProductScreen.js的路由参数取值逻辑
    首先确认你项目路由配置中详情页的路径参数名,假设路由定义为/product/:id,将原有代码:
    const productId = useParams();
    
    修改为解构取对应参数:
    const { id: productId } = useParams();
    
  • 调整action调用逻辑,确保传入数值类型ID匹配后端校验规则
    将原有useEffect内的调用代码:
    dispatch(detailsProduct(productId))
    
    修改为:
    useEffect(() => {
      dispatch(detailsProduct(Number(productId)))
    }, [dispatch, productId]);
    

补充检查项

  • 确认路由配置中的参数名和useParams解构的key完全一致,比如路由如果配置为/product/:productId,则解构写法改为const { productId } = useParams()
  • 确认detailsProduct action内部的请求逻辑是将传入的ID正确拼接到接口地址,格式应为/api/products/${传入的ID变量}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:24:07