Apollo GraphQL错误:必须提供查询根类型

时间:2020-01-06 08:26:22

标签: graphql apollo

我有一个Angular / Apollo GraphQL实现,该实现基于GraphQl端点生成正对架构的打字稿代码。我可以通过邮递员通过查询查询端点,并返回结果。但是,当我通过npm运行“ graphql-codegen --config codegen.yml”时,出现此错误:

“错误:必须提供查询根类型”

服务器端是使用GraphQL ASPNetCore的.Net Core实现。我定义了4个不同的查询,每个查询都通过graphiql工作。

关于查询根类型为何现在返回为null的任何想法?

4 个答案:

答案 0 :(得分:2)

GraphQL必须至少具有一个@Query()才能被视为有效。因此,也许只需要将任何查询添加到您的解析器代码中将很有帮助。 例如:

export class FooResolver {

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

答案 1 :(得分:1)

当架构提示/定义不正确时,将引发此错误。请检查您的根架构定义

https://www.advancedgraphql.com/content/schema-stitching

答案 2 :(得分:0)

我最终恢复了代码库的先前版本,并手动重新应用了修改,并且现在可以使用了。我唯一能想到的就是我运行了npm update,它将apollo-angular从1.8.3更新为1.10.0。

编辑,这是我的代码:

codegen.yml(用于从npm命令生成代码):

overwrite: true
schema: "https://to_end_point/Prod/api/v1/GraphQL"
documents: "src/**/*.graphql"
generates:
  src/generated/graphql.ts:
    plugins:
      - "typescript"
      - "typescript-operations"
      - "typescript-apollo-angular"
  ./graphql.schema.json:
    plugins:
      - "introspection"

恢复到以前的Angular代码版本,然后重新应用我的代码修改后,GraphQl代码生成再次起作用。我唯一想到的可能是导致问题的原因是我运行npm update时。以下是package.json之前/之后的屏幕截图:

enter image description here

答案 3 :(得分:0)

使用graphql-codegen时遇到相同的问题。

我的codegen.yml是

overwrite: true
schema: "http://localhost:3001/graphql"
documents: "src/app/graphql/*.graphql"
generates:
  src/generated/graphql.ts:
    plugins:
      - typescript
      - typescript-operations
      - typescript-apollo-angular

当我使用插件typescript-apollo-angular时,问题就来了。

我使用Nodejs作为后端的graphql

重命名类型后问题得以解决 RootQuery->查询 和 根突变->突变 在后端 schema 中。

之前


type RootQuery {
  _empty: String  
}

type RootMutation {
  _empty: String
}

schema {
    query: RootQuery
    mutation: RootMutation
}

之后

type Query {
  _empty: String  
}

type Mutation {
  _empty: String
}

schema {
    query: Query
    mutation: Mutation
}