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

如何让apollo client:codegen忽略@rest指令解决查询字段报错

解决方案

该报错是因为apollo client:codegen默认会对照服务端GraphQL schema校验所有查询字段,@rest指令声明的是仅客户端存在的查询字段,不在服务端schema定义中,因此触发字段不存在的校验错误。

方法1:搭配@client指令跳过服务端校验

你可以在@rest指令旁边加上@client指令,标记该字段为客户端专属字段,codegen会自动跳过对该字段的服务端schema校验:

export const wompiAcceptanceTokenQuery = gql`
  query WompiAcceptanceToken {
    acceptanceToken
      @rest(
        type: "WompiAcceptanceToken"
        path: "some/api/endpoint"
      )
      @client {
      data
    }
  }
`

不需要修改codegen脚本,改完查询语句重新执行生成命令即可。

方法2:指定客户端schema补充字段定义

如果不想给每个@rest查询加@client,你可以单独创建一个客户端schema文件,补充所有@rest相关的字段定义:

  1. 新建client-schema.graphql文件,内容示例如下:
extend type Query {
  acceptanceToken: WompiAcceptanceToken
}

type WompiAcceptanceToken {
  data: String # 按接口实际返回字段调整类型
}
  1. 修改你的npm脚本,添加--clientSchema参数指定该文件:
"typegenerate": "apollo client:codegen --target=typescript types --globalTypesFile=src/types/globalTypes.ts --clientSchema ./client-schema.graphql && rm -rf types",

方法3:排除包含@rest查询的文件

如果不需要给这类@rest查询生成TS类型,可以通过--exclude参数排除对应文件,示例如下:

"typegenerate": "apollo client:codegen --target=typescript types --globalTypesFile=src/types/globalTypes.ts --exclude 'src/**/*rest-query*.ts' && rm -rf types",

把路径替换为你实际存放@rest查询的文件路径即可。


内容的提问来源于stack exchange,提问作者Cristian Flórez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:57:02