使用Shopify GraphQL 2020-10端点cartCreate时提示Mutation不存在该字段如何解决
报错原因
- 接口版本适配问题:
cartCreate虽然计划在2020-10版本加入Storefront API,但该版本中此接口属于预览阶段的不稳定功能,默认不对外开放调用,直到2021-01及之后的API版本才被纳入正式可用范围。 - 权限配置问题:你使用的Storefront Access Token没有开通购物车相关的读写权限,Shopify后台分配Storefront API权限时需要单独勾选购物车操作权限才允许调用cart系列接口。
- 版本号拼写错误:检查请求地址中的版本号是否和预期一致,排除拼写错误导致实际请求了更低版本的API。
解决方案
- 【推荐】升级API版本到2021-01及以上的稳定版本,直接将请求地址中的
2020-10替换为更高的稳定版本号即可,例如2024-01,高版本的cart接口功能更完善,没有预览版的使用限制。 - 如果必须使用2020-10版本,需要将请求地址中的版本号替换为
unstable,即可调用该版本下的预览功能,注意不稳定版本的接口可能存在变动,不推荐在生产环境使用。 - 校验API权限配置:进入Shopify店铺后台的「应用」-「开发应用」,找到对应应用的「Storefront API集成」配置页,确认勾选了购物车读写相关的权限,保存后重新生成AccessToken替换现有环境变量值。
- 可以先在本地用Shopify GraphiQL工具测试接口可用性,输入店铺域名和AccessToken后运行你的mutation语句,确认返回正常后再同步到业务代码中。
修复后示例代码
import Cookies from "js-cookie"; import { GraphQLClient, gql } from "graphql-request"; async function shopifyRequest() { const graphQLClient = new GraphQLClient( // 替换为2021-01及以上的稳定版本号 "https://jamiegalbreath.myshopify.com/api/2024-01/graphql.json", { headers: { "Content-Type": "application/json", "X-Shopify-Storefront-Access-Token": process.env.REACT_APP_SHOPIFY_STOREFRONT_ACCESS_TOKEN, }, } ); const mutation = gql` mutation { cartCreate { cart { id } userErrors { code field message } } } `; const variables = {}; const data = await graphQLClient.request(mutation, variables); return data } export async function test() { await shopifyRequest() .then((res) => { console.log("生成的购物车ID:", res.cartCreate.cart.id); console.log("DONE"); }) .catch((error) => console.error(error)); }
内容的提问来源于stack exchange,提问作者jamiegalbreath
相关产品推荐
相关产品推荐

