graphql - Apollo 客户端:codegen 如何为@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 的支持(已删除或未记录?)
任何想法?
解决方案
好的,看来我必须直接在 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 对我来说从来没有用过,但这将是一个挖掘的解决方案……</p>
推荐阅读
- mysql - 使用内部选择连接来自 3 个表的数据
- javascript - 在summernote中嵌入社交媒体链接
- c# - Monitor.Pulse() 有条件
- javascript - OpenLayers 中多边形的自己的 removeLastPoint() 函数
- java - 是否可以从 Dropbox 文件的元数据中仅检索标签。?
- excel - 将数组集成到excel VBA中的子例程中
- javascript - 我可以将 id 属性添加到使用 React 创建的 html 元素中吗
- java - Java Swing/AWT 是否有 getComponentShape() 方法?
- kaldi - Kaldi - Mini librispeech - 解码自己的文件
- gzip - 在 Linux 中正确压缩 KML 文件