Shopify Function metafield 超限变 null
现象#
限购规则从 80 条加到 300 条后,函数不再拦任何超量购物车;后台 metafield 值还在,长度约 14 KB,Dev Dashboard 的 Function 日志里该字段是 null。
原因#
- 输入查询读取的 metafield 超过 10,000 字节时平台直接不返回,既不截断也不报错
- 函数把 null 当成空配置,规则集为空自然全部放行,这次运行仍是 success
- 变体 GID 在 JSON 里约占 45 字节,200 个 ID 就能顶满一个 metafield 的额度
- 全塞进一个字段还会撞上 128 kB 的 input 上限,那时是整店加购直接失败
处理步骤#
- 先量真实字节数:
Buffer.byteLength(value, "utf8"),超过 9000 就拆分 - 按规则类型拆成
$app:rules:limits与$app:rules:exclusions固定分片 - 输入查询逐个取分片再合并,每多一个 metafield 多 3 点
query cost - 写入侧做装箱,单片控制在
8000字节以内,装不下就在后台报错 - 部署后用一条本应被拦截的购物车回放,确认 errors 真的返回
验收标准#
规则总数不变的前提下,日志里每个分片的 value 均非 null,超量购物车在结账页被拦下并显示配置的文案。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。