Shopify Functions

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

处理步骤#

  1. 在 shopify.app.toml 用 [shop.metafields.app.rules] 声明
  2. 输入查询用 shop.metafield 取 $app:rules 下的 config 值
  3. 需要前台读同一份数据时给定义加 access.storefront = "public_read"
  4. 用 Admin API 查 metafieldDefinitions 的 namespace、key 与 access
  5. 用 shopify app function run -j 回放真实 input,确认 value 非 null

验收标准#

回放日志里 input 的 metafield.value 与后台保存的 JSON 完全一致,函数输出的 operations 不再为空数组。

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