Shopify React调用metafieldsSet GraphQL接口报错求助
解决方法
针对 Field 'metafieldsSet' doesn't exist on type 'Mutation' 报错
- 检查Shopify Admin API版本:
metafieldsSet接口仅在2021-07及更高版本的Admin API中支持,需要确认你项目中配置的API版本符合要求,修改入口通常在shopify.app.toml配置文件,或者Apollo客户端初始化时的GraphQL接口地址后缀(格式如/admin/api/2024-07/graphql.json)。 - 确认APP权限配置:已开启
write_meta_fields权限,修改权限后需要重新安装APP到测试商店才可生效。
针对 Variable $metafields is declared by metafieldsSet but not used 报错
该报错的核心原因是变量类型不匹配:你在Mutation定义中声明的$metafields是[MetafieldsSetInput!]!数组类型,但代码中传递的newmetafields是单个对象,类型校验失败后GraphQL会判定变量未被正确使用。
修改调用handleSubmit时的参数即可:
// 原错误写法 promise = promise.then(() => handleSubmit({ variables: { metafields: newmetafields }})); // 修正后写法,将单个对象包裹为数组 promise = promise.then(() => handleSubmit({ variables: { metafields: [newmetafields] }}));
可选优化
你当前使用的react-apollo已经不是Shopify官方推荐的GraphQL客户端,后续可以替换为@apollo/client配合新版App Bridge使用,避免更多兼容问题。
内容的提问来源于stack exchange,提问作者user2389087
相关产品推荐
相关产品推荐

