【问题标题】:Apollo client:codegen how to generate typings for @client directive?Apollo 客户端:codegen 如何为@client 指令生成类型?
【发布时间】:2019-11-16 22:35:29
【问题描述】:

当我运行以下命令时:

apollo client:codegen --target=typescript --config=./apollo.config.js --outputFlat=./graphql.queries.ts

→ 初始化 Apollo GraphQL 项目“MySchema”时出错:错误: “加载合并模式的模式”中的错误:错误:未知指令 “客户”。

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

query MyQuery {
    someStuff @client {
        value
    }
}

开启https://github.com/apollographql/apollo-tooling/issues/366 我发现我可以为 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 等效项。

我看到 2 个可能的错误:

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

有什么想法吗?

【问题讨论】:

    标签: graphql apollo apollo-client


    【解决方案1】:

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

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

    然后写:

    query MyQuery {
        someStuff @client {
            value
        }
    }
    

    不会再在我的 IDE 中引发错误,也不会在生成相应的 queries.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 对我来说从来没有用过,但这将是一个挖掘的解决方案……

    【讨论】:

      猜你喜欢
      • 2020-01-19
      • 2022-07-10
      • 2020-02-07
      • 2019-07-30
      • 2020-12-21
      • 2020-01-16
      • 2021-11-16
      • 2019-07-26
      • 1970-01-01
      相关资源
      最近更新 更多