Apollo client:codegen如何为@client指令生成类型?

时间:2019-07-06 20:38:11

标签: 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 {
        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的支持(已删除或未记录?)

有什么主意吗?

1 个答案:

答案 0 :(得分:0)

好吧,看来我必须直接在schema.graphql

之一中添加以下行

directive @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中对我来说是行不通的,但这将是挖掘的一种解决方案……

相关问题