问题描述
我正在使用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
指令以及所有其他可用的指令。