GraphQL:未知指令包括

问题描述

我正在使用Nodejs中的Graphql使用指令。当我想在Playground中使用@include指令时,Graphql客户端会告诉我:“未知指令include”。这是我的代码:

query getChar($id: ID!,$withGames: Boolean!) {
  getCharacter(_id: $id) {
    _id
    name
    race
    games @include(if: $withGames) {
      _id
      title
    }
    image
  }
}

在我的查询变量中,我有:

{
  "id": "5f945a7b24c84f35ecfae633","withGames": false
}

但出现以下错误:

{
  "error": {
    "errors": [
      {
        "message": "Unknown directive \"@include\".","locations": [
          {
            "line": 6,"column": 11
          }
        ],"extensions": {
          "code": "GRAPHQL_VALIDATION_FAILED","exception": {
            "stacktrace": [
              "GraphQLError: Unknown directive \"@include\".","    at Object.Directive (C:\\Users\\MSI\\projects\\Graphql\\cursobasico\\node_modules\\graphql\\validation\\rules\\KnownDirectivesRule.js:56:29)","    at Object.enter (C:\\Users\\MSI\\projects\\Graphql\\cursobasico\\node_modules\\graphql\\language\\visitor.js:323:29)","    at Object.enter (C:\\Users\\MSI\\projects\\Graphql\\cursobasico\\node_modules\\graphql\\utilities\\TypeInfo.js:370:25)","    at visit (C:\\Users\\MSI\\projects\\Graphql\\cursobasico\\node_modules\\graphql\\language\\visitor.js:243:26)","    at Object.validate (C:\\Users\\MSI\\projects\\Graphql\\cursobasico\\node_modules\\graphql\\validation\\validate.js:69:24)","    at validate (C:\\Users\\MSI\\projects\\Graphql\\cursobasico\\node_modules\\apollo-server-core\\src\\requestPipeline.ts:510:14)","    at Object.<anonymous> (C:\\Users\\MSI\\projects\\Graphql\\cursobasico\\node_modules\\apollo-server-core\\src\\requestPipeline.ts:296:32)","    at Generator.next (<anonymous>)","    at fulfilled (C:\\Users\\MSI\\projects\\Graphql\\cursobasico\\node_modules\\apollo-server-core\\dist\\requestPipeline.js:5:58)","    at processTicksAndRejections (internal/process/task_queues.js:97:5)"
            ]
          }
        }
      }
    ]
  }
}

我在做什么错了?

解决方法

It was a version problem of the graphql-tools。检查node_modules/graphql-tools/package.json文件后,我发现我正在使用版本4。我发现here版本4的指令存在问题,建议使用版本5。这就是我所做的:

npm i graphql-tools@5.0.0

我重新启动服务器并刷新Playground page,瞧,我已经有了@include指令以及所有其他可用的指令。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...