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

如何解决Apollo codegen嵌套fragment重复声明的问题

解决GraphQL Codegen重复声明fragment的方法
  • 开启内置fragment去重配置
    在你的codegen配置文件(通常为codegen.yml/codegen.js/codegen.ts)中添加dedupeFragments: true配置,该配置会自动识别重复导入的同一份fragment,全局仅保留一次声明。
    常规配置示例:
    schema: ./schema.graphql
    documents: './src/**/*.gql'
    generates:
      ./src/generated/graphql.ts:
        plugins:
          - typescript
          - typescript-operations
          - typed-document-node
        config:
          dedupeFragments: true # 核心去重配置
    
    如果你使用的是client预设,需要将配置放在presetConfig中:
    generates:
      ./src/generated/:
        preset: client
        presetConfig:
          dedupeFragments: true
    
  • 确保#import语法被正确解析
    提前安装@graphql-tools/import依赖,该工具负责解析.gql文件中的导入语法,准确识别公共fragment的引用关系,避免同一份fragment被codegen判定为多个独立实例。
  • 升级GraphQL Codegen到稳定版
    v2以下版本的GraphQL Codegen没有内置fragment去重能力,如果你使用的是旧版本,升级到v2及以上的稳定版即可支持上述去重配置。

配置生效后重新运行codegen,你的示例中ImageInfos fragment只会在生成的代码中声明一次,所有引用它的位置都会直接复用该声明,不会出现重复定义问题。

内容的提问来源于stack exchange,提问作者rayfranco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:39:05