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

使用graphql-import配置Apollo GraphQL cacheControl指令遇重复定义错误

解决graphql-import中@cacheControl指令重复定义的问题

我来帮你搞定这个头疼的问题!咱们一步步分析:

问题根源

你用的graphql-import@0.7.1或者项目里依赖的其他GraphQL库(比如Apollo Server这类框架),其实已经内置了@cacheControl指令和CacheControlScope枚举的定义。最开始你遇到“找不到cacheControl类型”的错误,是因为你的schema没有和框架提供的基础schema合并;后来手动添加了定义,又和内置的重复了,所以才报出类型/枚举值重复的错误。

解决方案

1. 移除手动添加的指令和枚举定义

直接保留你的Post类型定义即可,不用再手动写directive @cacheControl和enum CacheControlScope这部分代码:

type Post @cacheControl(maxAge: 240) {
  id: Int!
  title: String
  author: Author
  votes: Int @cacheControl(maxAge: 30)
  readByCurrentUser: Boolean! @cacheControl(scope: PRIVATE)
}

2. 确保框架已启用cacheControl支持

如果是用Apollo Server这类框架,需要确保在创建服务器时开启了cacheControl功能,这样框架会自动把相关的类型定义注入到你的schema中。比如在Apollo Server的配置里:

const server = new ApolloServer({
  typeDefs,
  resolvers,
  cacheControl: {
    defaultMaxAge: 60, // 可选,设置全局默认缓存时长
  },
});

额外说明

如果你的项目是通过多个schema文件导入合并的,要检查所有导入的文件里有没有重复定义这些类型。对于graphql-import@0.7.1来说,依赖框架内置的定义是最省心的方式,不用自己维护这些基础指令和枚举。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:12:17