【问题标题】:GraphQLError: Query root type must be providedGraphQLError:必须提供查询根类型
【发布时间】:2021-01-14 06:11:42
【问题描述】:

我将 NestJS、TypeORM 和 GraphQL 用于我的后端 API。我收到以下错误:

GraphQLError [Object]: Query root type must be provided.
      at SchemaValidationContext.reportError (/home/wise-introvert/Container/Projects/the-notebook/app/server/node_modules/graphql/type/validate.js:88:19)
      at validateRootTypes (/home/wise-introvert/Container/Projects/the-notebook/app/server/node_modules/graphql/type/validate.js:107:13)
      at validateSchema (/home/wise-introvert/Container/Projects/the-notebook/app/server/node_modules/graphql/type/validate.js:52:3)
      at graphqlImpl (/home/wise-introvert/Container/Projects/the-notebook/app/server/node_modules/graphql/graphql.js:79:62)
      at /home/wise-introvert/Container/Projects/the-notebook/app/server/node_modules/graphql/graphql.js:28:59
      at new Promise (<anonymous>)
      at Object.graphql (/home/wise-introvert/Container/Projects/the-notebook/app/server/node_modules/graphql/graphql.js:26:10)
      at GraphQLSchemaFactory.<anonymous> (/home/wise-introvert/Container/Projects/the-notebook/app/server/node_modules/@nestjs/graphql/dist/schema-builder/graphql-schema.factory.js:49:52)
      at Generator.next (<anonymous>)
      at /home/wise-introvert/Container/Projects/the-notebook/app/server/node_modules/tslib/tslib.js:114:75

这是我的文件结构和代码的样子:

谁能帮帮我。我的仓库:https://github.com/wise-introvert/nestjs-graphql-api.git

【问题讨论】:

    标签: postgresql graphql nestjs typeorm


    【解决方案1】:

    所有运行 GraphQL 的服务器必须至少有一个 @Query() 才能被视为有效的 GraphQL 服务器。没有它,apollo-server 包会抛出异常,服务器将无法启动。这可以很简单

    @Resolver()
    export class FooResolver {
    
      @Query(() => String)
      sayHello(): string {
        return 'Hello World!';
      }
    }
    

    【讨论】:

    • 我在解析器的 @Query 装饰器下添加了一个虚拟函数,但它仍然抛出相同的错误。
    【解决方案2】:

    还要确保在模块提供程序中添加解析器

    @Module({
      imports: [
        GraphQLModule.forRoot({
          installSubscriptionHandlers: true,
          autoSchemaFile: true,
        }),
      ],
      controllers: [],
      providers: [FooResolver], //< This
    })
    export class FooModule {}
    

    【讨论】:

    • 谢谢!这对我来说是个问题。接受的答案并没有为我解决这个错误。
    • 谢谢!这对我有帮助
    • 谢谢!这已经解决了我的问题
    【解决方案3】:

    此答案不是问题的直接答案。

    但是,如果您遇到所描述的问题并且答案没有帮助,请重新检查您是否使用了正确的导入:

    // Correct
    import { Resolver, Query } from '@nestjs/graphql';
    
    // Incorrect in NestJS
    import { Resolver, Query } from 'type-graphql';
    

    【讨论】:

      猜你喜欢
      • 2019-06-16
      • 2020-04-23
      • 2018-12-15
      • 2020-02-25
      • 2021-01-27
      • 2018-01-13
      • 2018-12-30
      • 2019-06-02
      • 2017-10-29
      相关资源
      最近更新 更多