Shopify CLI 与 Headless

Hydrogen 的 CartForm 提交后购物车没变怎么排查

现象#

点击 CartForm 的加购按钮后页面整页刷新,cart.totalQuantity 仍是 0;DevTools 里 POST /cart 返回 200,但响应体是整页 HTML 而不是 JSON。

原因#

  • CartForm 依赖 /cart 路由导出的 action,文件缺失时请求落到根路由并返回 HTML
  • inputs 结构不对:LinesAdd 需要 lines 数组,每项含 merchandiseId
  • /cart 由 createCartServerHandlers() 接管,旧 action 未删会重复处理
  • 变体 ID 填了纯数字而非 gid 形式,cartLinesAdd 返回 userErrors 但被忽略

处理步骤#

  1. 看 DevTools 里 POST /cart 的 Content-Type 是否为 text/html
  2. 确认 app/routes/cart.tsx 导出了 action() 而不是 loader
  3. action 写成 CartForm.ACTIONS.LinesAdd,不要用字符串字面量
  4. inputs 用 {lines: [{merchandiseId, quantity}]},并打印 userErrors
  5. 2026-10 改用 useCartForm(),删掉自建 action 交给处理器

验收标准#

加购后 /cart 返回 JSON,购物车角标数量立即加一,购物车页的行项目与所选变体一致。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。