使用TypeGraphQL与TypeORM时出现CannotDetermineGraphQLTypeError报错如何解决
错误原因排查与修复方案
该报错是TypeGraphQL无法识别Resolver中photos查询的返回类型,按以下步骤排查修复即可:
1. 优先检查tsconfig.json配置
TypeGraphQL依赖TypeScript的装饰器元数据能力,必须在tsconfig.json中开启以下核心配置:
{ "compilerOptions": { "target": "ES2018", "module": "CommonJS", "experimentalDecorators": true, "emitDecoratorMetadata": true, "strictPropertyInitialization": false, "esModuleInterop": true } }
重点确认experimentalDecorators和emitDecoratorMetadata两项为true,90%以上的该类报错都是漏加这两个配置导致的。
2. 检查实体导入路径与文件名大小写
确认photosResolver中导入Photo的路径../entity/Photo和实际文件路径完全一致,注意文件名大小写敏感:比如实体文件如果命名为photo.ts(首字母小写),而导入时写的Photo,在非Windows环境会直接出现类型识别失败的问题。
3. 修正Resolver方法的异步定义
建议显式声明方法为async,避免返回类型推断异常:
@Resolver() export class photosResolver { @Query(() => [Photo]) async photos() { // 增加async关键字 return await Photo.find(); // 显式await获取查询结果 } }
4. 检查依赖版本兼容性
如果使用的是TypeORM 0.3.x版本,确认和当前使用的type-graphql版本兼容,推荐使用以下稳定版本组合:
- type-graphql: 1.1.1
- typeorm: 0.2.45
- apollo-server-express: 3.x
完成以上操作后重启服务即可解决报错。
内容的提问来源于stack exchange,提问作者FewArc
相关产品推荐
相关产品推荐

