当我运行以下命令时:
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种可能的错误:
有什么主意吗?
答案 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中对我来说是行不通的,但这将是挖掘的一种解决方案……