升级graphql-codegen后无法合并abstractEntity指令报错如何解决
问题解决方法
报错原因
该错误由@graphql-tools/merge包的校验规则升级导致:旧版本合并GraphQL指令时会忽略参数顺序差异,而你升级后的新版本会将参数顺序不同的同名指令判定为冲突定义,无法完成合并。
你回滚依赖后仍报错的核心原因是未清理依赖缓存:仅修改package.json的版本声明不会覆盖已安装的依赖包,项目实际运行的还是新版本的@graphql-tools/merge。
可选用的解决方案
- 统一指令定义顺序
全局搜索项目内所有@abstractEntity指令的定义位置,将所有定义的参数顺序调整为一致即可。建议和报错提示中的现有指令保持统一:
调整完成后重新执行directive @abstractEntity(discriminatorField: String!, additionalFields: [AdditionalEntityFields]) on INTERFACEyarn gen即可正常生成代码。 - 彻底回滚依赖版本
先删除项目根目录下的node_modules文件夹和yarn.lock文件(npm用户删除package-lock.json),再执行yarn install重新安装依赖,确保实际运行的是你指定的旧版本包,再执行生成命令。 - 新增配置忽略校验
如果你不想修改现有指令定义,可以在codegen配置文件中新增规则,忽略指令参数顺序的校验:
在你的codegen配置根层级添加如下配置:
保存配置后重新执行config: merge: ignoreDirectiveArgOrder: trueyarn gen即可。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

