Hasura GraphQL报错:Payouts类型未找到adyenStatus字段求助
排查 GraphQL 字段
adyenStatus 不存在的问题 错误信息
浏览器控制台抛出以下错误:
Uncaught (in promise) Error: field "adyenStatus" not found in type: 'Payouts'
排查步骤
1. 确认 Hasura GraphQL Schema 中存在该字段
- 打开 Hasura Console 的 GraphiQL 页面,点击右上角「Docs」按钮,找到
Payouts类型,检查是否包含adyenStatus字段。 - 如果字段不存在:
- 确认数据库表中是否真的有
adyenStatus字段,若存在,需在 Hasura 中重新追踪该表,确保字段被添加到 Schema。 - 检查 Hasura 对该表的权限配置,确保当前使用的角色拥有读取
adyenStatus字段的权限。
- 确认数据库表中是否真的有
2. 验证 Hasura 查询实际返回字段
在 Hasura GraphiQL 中执行你的查询,查看返回结果里的 payouts 项是否包含 adyenStatus:
- 如果返回结果里没有该字段,说明是 Hasura 端的问题(Schema 未同步或权限未开放)。
- 如果返回结果里有该字段,继续排查前端问题。
3. 排查前端缓存与代码生成问题
- 清理项目缓存:删除
node_modules、dist/build文件夹,重新安装依赖并编译项目。 - 临时绕过 Apollo 缓存测试:在查询中添加
fetchPolicy: 'network-only',确认是否是旧缓存导致的问题:export default function usePayoutsQuery(variables?: OperationVariables) { return useQuery<PayoutsType>(GET_PAYOUTS, { variables, fetchPolicy: 'network-only' }); }
4. 检查字段拼写与别名
- 确认 GraphQL 查询中的字段名拼写完全一致(注意大小写:
adyenStatus不是AdyenStatus或adyen_status)。 - 查看浏览器 Network 面板的 GraphQL 请求响应,确认前端实际收到的数据中是否包含
adyenStatus字段。
5. 确认 TypeScript 类型与实际数据匹配
虽然你的 Payout 接口定义了 adyenStatus,但如果实际返回数据缺失该字段,也可能引发类型相关错误。不过当前错误来自 GraphQL 层面,优先级低于前面的排查点。
内容的提问来源于stack exchange,提问作者Bob
相关产品推荐
相关产品推荐

