Graphql Apollo client:codegen如何为@client指令生成打字?

Graphql Apollo client:codegen如何为@client指令生成打字?,graphql,apollo,apollo-client,Graphql,Apollo,Apollo Client,当我运行以下命令时: apollo client:codegen --target=typescript --config=./apollo.config.js --outputFlat=./graphql.queries.ts → 初始化Apollo GraphQL项目“MySchema”时出错:错误: “为合并架构加载架构”中出错:错误:未知指令 “客户” 这是由于我的一个查询包含@client指令: query MyQuery { someStuff @client {

当我运行以下命令时:

apollo client:codegen --target=typescript --config=./apollo.config.js --outputFlat=./graphql.queries.ts
→ 初始化Apollo GraphQL项目“MySchema”时出错:错误: “为合并架构加载架构”中出错:错误:未知指令 “客户”

这是由于我的一个查询包含
@client
指令:

query MyQuery {
    someStuff @client {
        value
    }
}
在 我发现我可以为apollo codegen命令指定--clientSchema属性,例如:

apollo codegen:generate generated \
   --queries=src/components/**/*.tsx \
   --target typescript \
   --schema src/generated/schema.json \ 
   --clientSchema src/state/schema.graphql
但是我使用的是一个
apollo.config.js
文件,我找不到如何在配置文件中指定这个clientSchema等价物

我看到两个可能的错误:

  • 要么我没有正确使用@client指令
  • 或者apollo.config.js文件中缺少(已删除或未记录?)对clientSchema的支持

有什么想法吗?

好的,看来我必须直接在schema.graphql中添加以下行

指令@client on FIELD
这将重载AST定义以支持@client指令

然后写:

query MyQuery {
    someStuff @client {
        value
    }
}
将不再在我的IDE中引发错误,也不会在生成相应的querys.ts文件时抛出错误

信息:另一个线程提到在
.graphqlconfig
文件中添加上面的行,如下所示:

{
  "name": "Schema name",
  "schemaPath": "./pathTo/schema.graphql",
  "extensions": {
    "endpoints": {
      "Default GraphQL Endpoint": {
        "url": "http://localhost:4466",
        "headers": {
          "user-agent": "JS GraphQL"
        },
        "introspect": false
      }
    },
    "extensions": {
      "customDirectives": [
        "directive @client on FIELD"
      ]
    }
  }
}
但是,将它添加到.graphqlconfig中对我来说从来都不起作用,但是这将是一个挖掘