cartCreate 加 deliveryGroups 报字段不存在
现象#
按直觉拼 cartCreate(input: { lines: [...], deliveryGroups: [...] }),返回 Field 'deliveryGroups' doesn't exist on type 'CartInput';删掉之后运费和地址又完全没带进结账。
原因#
- deliveryGroups 是 Cart 的输出字段,只能查不能写,塞进 CartInput 必然被 schema 拒绝
- 地址与市场上下文属于 buyerIdentity,要传 countryCode 或 deliveryAddressPreferences
- 具体配送方式要在创建后用 cartSelectedDeliveryOptionsUpdate 选择,而不是在创建时指定
- 想拿承运商实时运费还得在查询里加 @defer 并传 withCarrierRates: true
处理步骤#
- 从 input 里删掉
deliveryGroups,改为传buyerIdentity: { countryCode: DE, email: ... } - 需要预填地址时在
buyerIdentity.deliveryAddressPreferences里放一个 deliveryAddress - 创建后用
cart(id:) { deliveryGroups(first: 5) { nodes { id deliveryOptions { handle } } } }查可选方式 - 选中方式时调用
cartSelectedDeliveryOptionsUpdate,传 deliveryGroupId 与 deliveryOptionHandle - 要实时运费就在查询上加
@defer并传withCarrierRates: true
验收标准#
cartCreate 返回的 buyerIdentity.countryCode 与传入一致,deliveryGroups 至少一个节点且 deliveryOptions 非空。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。