Shopify Function 读不到 $app metafield
现象#
输入查询写了 metafield(namespace: "$app:rules", key: "config"),本地 fixture 能跑出结果,线上函数拿到的 value 却是 null,而后台该 metafield 确实有 JSON。
原因#
- app 自建 metafield 要落在保留命名空间,
$app与$app:子空间是两层 - 用 TOML 声明定义时只能用 $app,namespace 写成 custom 会在 deploy 阶段被拒
- 给非保留命名空间设 access 会直接报错,提示该命名空间不允许设置访问控制
- owner 选错同样返回 null:店铺级规则要查
shop.metafield
处理步骤#
- 在
shopify.app.toml用[shop.metafields.app.rules]声明 - 输入查询用
shop.metafield取 $app:rules 下的 config 值 - 需要前台读同一份数据时给定义加
access.storefront = "public_read" - 用 Admin API 查
metafieldDefinitions的 namespace、key 与 access - 用
shopify app function run -j回放真实 input,确认 value 非 null
验收标准#
回放日志里 input 的 metafield.value 与后台保存的 JSON 完全一致,函数输出的 operations 不再为空数组。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。