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

Magento 2.4.4 PWA Studio12.5.0 PDP页跳转404问题求助

故障基础信息
  • 运行环境:Magento 2.4.4 + PWA Studio 12.5.0
  • 故障表现:PLP分类页面可正常加载访问,PDP商品详情页访问时会自动重定向至404页面
核心报错日志

浏览器控制台日志

{"errors":[{"debugMessage":"Expected a value of type \"Int\" but received: PRODUCT","message":"Internal server error","extensions":{"category":"internal"},"locations":[{"line":1,"column":75}],"path":["route","type"]}],"data":{"route":{"relative_url":"url-product-1.html","redirect_code":0,"type":null,"uid":"MTA4ODA4OA==","__typename":"SimpleProduct"}}}

补充控制台报错细节:

{
  errors: [{debugMessage: "Expected a value of type \"Int\" but received: PRODUCT",…}],
  data: {
    route: {
      relative_url: "epoxy-acrylic-resin-hazmat-item.html",
      redirect_code: 0,
      type: null,
      uid: "OTY2MTk=",
      __typename: "SimpleProduct"
    }
  }
}
[GraphQL error]: Message: Internal server error, Location: [object Object], Path: route,type

Magento端debug日志

==> debug.log <==
[2022-07-06T18:09:47.677613+00:00] report.ERROR: Expected a value of type "Int" but received: PRODUCT

GraphQL (1:75)
1: query ResolveURL($url:String!){route(url:$url){relative_url redirect_code type ...on CmsPage{identifier __typename}...on ProductInterface{uid __typename}...on CategoryInterface{uid __typename}__typename}}
根因判定

报错触发点在GraphQL路由解析接口的type字段:原生Magento的route查询Schema中,type字段定义为Int类型枚举,对应规则为1=商品、2=分类、3=CMS页面,但当前环境中有第三方模块或自定义改写逻辑,直接返回了字符串PRODUCT作为type值,和Schema定义的Int类型不匹配,触发GraphQL类型校验错误,最终type字段返回null。PWA Studio的前端路由逻辑拿不到合法的type值判定页面类型,就会直接走404重定向逻辑。
PLP分类页能正常访问,是因为分类路由的解析逻辑没有被改写、返回值符合类型要求。

排查&修复步骤
  • 第一步:定位冲突第三方模块
    临时禁用所有非Magento官方的第三方模块,重点优先排查URL重写、GraphQL扩展、PWA适配类模块,执行以下命令刷新缓存:
    bin/magento setup:upgrade
    bin/magento cache:clean
    
    清空PWA站点缓存后重试访问PDP,如果页面恢复正常,逐个开启之前禁用的模块,即可定位到改写了路由解析逻辑的冲突模块。
  • 第二步:排查自定义代码改写
    如果禁用所有第三方模块后问题仍存在,检查app/code目录下的本地自定义代码,重点查找两类改写:
    1. 通过di.xml给Magento\UrlRewriteGraphQl\Model\Resolver\Route类绑定的拦截插件(plugin)
    2. 通过preference方式重写了上述Route解析器类的自定义代码
      核对代码中返回的type字段值,确认是否直接返回了PRODUCT/CATEGORY/CMS_PAGE字符串,没有做类型映射转换。
  • 第三步:修复返回值类型
    定位到问题代码后,将type字段的返回值修改为原生要求的Int枚举值即可:
    • 商品页(PRODUCT)对应返回值:1
    • 分类页(CATEGORY)对应返回值:2
    • CMS页(CMS_PAGE)对应返回值:3
      修改完成后执行以下命令清理缓存:
    bin/magento cache:clean graphql_config full_page
    
  • 第四步:修复验证
    直接调用ResolveURL接口查询商品URL,确认返回结果中type字段为对应整数、无类型报错,再访问PDP验证页面正常加载即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:48:45