You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Shopify Node API修改资产时遭遇“Not Found”错误求助

解决Shopify Node API更新主题资产返回“Not Found”的问题

可能的原因及排查步骤

1. 应用权限不足

Shopify API修改主题资产需要write_themes权限,如果你的应用未申请该权限,或者店铺未完成授权,API可能会返回“Not Found”(Shopify有时会用404替代权限错误)。

  • 操作:进入Shopify后台的应用设置页面,查看应用权限范围,确认包含write_themes;若未包含,重新提交权限申请并让店铺管理员完成授权。

2. 会话(session)无效

确保使用的session对象包含有效的店铺域名、未过期的access token,且token权限覆盖write_themes。

  • 操作:打印session核心字段(如shop、accessToken)确认有效性;也可使用该token调用GET /admin/api/{version}/shop.json接口,测试是否能正常访问店铺数据。

3. 直接验证API端点(排除SDK问题)

绕过Node SDK,用HTTP工具直接调用Shopify API,确认问题是否出在SDK使用上:

curl -X PUT "https://{shop}.myshopify.com/admin/api/2024-04/themes/{theme_id}/assets.json" \
-H "X-Shopify-Access-Token: {access_token}" \
-H "Content-Type: application/json" \
-d '{
  "asset": {
    "key": "layout/theme.liquid",
    "value": "{{ content_for_header }}\n{{ '\'' '\'' | script_tag }}\n${scripts}\n{{ '\'' '\'' | script_tag }}\n{{ content_for_layout }}"
  }
}'

如果直接调用仍返回404,说明问题出在权限、主题ID或资产路径上;如果调用成功,则需排查Node SDK的使用逻辑。

4. 确认资产归属与存在性

虽然查询到了资产key,仍需确认该资产确实属于指定主题ID:

  • 调用GET /admin/api/{version}/themes/{theme_id}/assets.json?asset[key]=layout/theme.liquid,检查返回的资产信息是否完整,且主题ID与你使用的一致。

5. 代码细节优化

你的模板字符串存在多余缩进,虽不会直接导致404,但可能引发Liquid解析问题,建议调整代码:

const asset = new shopify.api.rest.Asset({session: session});
asset.theme_id = theme.id;
asset.key = 'layout/theme.liquid';
asset.value = `{{ content_for_header }}
{{ ' ' | script_tag }}
${scripts}
{{ ' ' | script_tag }}
{{ content_for_layout }}`;

await asset.save({ update: true });

内容的提问来源于stack exchange,提问作者Key Lol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:35:11