GraphQL查询报错:'qrcodeUrl'不存在、变量$id未使用求解决
问题解决建议
你的报错包含两个明确的问题,逐个解决即可:
1. 字段qrcodeUrl不存在于Query类型
这个错误说明你的GraphQL服务端根本没有在Query根类型下暴露qrcodeUrl这个字段。你需要先确认服务端正确的查询字段名——通常获取带ID的资源,需要通过一个带参数的字段调用,比如qrcode(id: $id)或者formQrcode(formId: $id)这类形式,而不是直接取qrcodeUrl。
举个修正后的查询示例(需要根据服务端实际Schema调整):
export const showQrCode = gql` query qrcodeUrlByFormId ($id: ID!){ # 这里的qrcode是服务端Query类型下存在的字段,需替换为实际字段名 qrcode(id: $id) { qrcodeUrl # 这里是该字段返回对象中的属性,需和服务端定义一致 } } `;
- 给
$id加上!标记非空,避免无效的空值请求 - 调用服务端真实存在的Query字段,并传入
$id变量
2. 变量$id声明但未使用
这个错误是因为你在查询里定义了$id,但没有任何地方用到它。上面的修正示例已经解决了这个问题——通过qrcode(id: $id)把变量传递给查询字段,变量就会被正常使用。
额外调整
如果服务端返回的结构是data.qrcode.qrcodeUrl,你需要同步修改listQrcode函数的返回逻辑:
export const listQrcode = async (id: any) => { console.log("inside list qrcode") const result = await useFormProvider(showQrCode, {id}); // 根据服务端返回结构调整解析逻辑 return result.data?.qrcode?.qrcodeUrl; }
关键验证步骤
- 先通过GraphQL Playground/IDE查看服务端的Schema文档,确认Query根类型下的可用字段,以及每个字段的参数、返回结构
- 用Postman测试修正后的查询语句,确保能正常返回数据后再同步到前端代码
内容的提问来源于stack exchange,提问作者user15361826
相关产品推荐
相关产品推荐

