Graphql-config 无法识别 Apollo Graphql @client 指令
Graphql-config does not recognize Apollo Graphql @client directive
我将 Apollo Client 与 React 结合使用,graphql-tag loaded with Webpack, and graphql-config 在客户端维护架构。
有一个文件./myclient/src/features/stats/graphql/getStart.graphql
query GetStart {
start @client
}
其中 start
和 @client
不使用 IDE graphql 插件进行验证,因为它们未包含在自动生成的架构中。
./myclient/.graphqlconfig
文件
{
"projects": {
"client": {
"schemaPath": "schema.graphql",
"extensions": {
"endpoints": {
"dev": "http://localhost:3000/graphql"
}
}
}
}
}
Webpack 配置为使用
在客户端加载 graphql 模式
{
test: /\.(graphql|gql)$/,
exclude: /node_modules/,
use: 'graphql-tag/loader',
},
它将正确加载服务器架构。但是,如何配置它以验证或忽略导致 Unknown field "start" on object "Query"
和 Unknown directive "@client"
错误的 start @client
?
可以为 Apollo 客户端定义客户端模式,the docs。我创建了一个包含类型定义的文件 ./src/apollo/graphql/typeDefs.graphql
。
directive @client on FIELD
type RestParams {
limit: Int
page: Int
}
extend type Query {
restParams: RestParams
}
我将 typeDefs.graphql
导入到 client.js
文件中,并将 typeDefs
添加到 ApolloClient
构造函数选项中。
import { ApolloClient } from 'apollo-client';
import { ApolloLink } from 'apollo-link';
import { InMemoryCache } from 'apollo-cache-inmemory';
import TYPE_DEFS from './graphql/typeDefs.graphql';
import createHttpLink from './links/httpLink';
import createErrorLink from './links/errorLink';
import createAuthLink from './links/authLink';
const errorLink = createErrorLink();
const httpLink = createHttpLink();
const authLink = createAuthLink();
const cache = new InMemoryCache({});
const client = new ApolloClient({
cache,
link: ApolloLink.from([
authLink,
errorLink,
httpLink,
]),
// resolves,
typeDefs: TYPE_DEFS,
connectToDevTools: true,
});
export default client;
类型定义不能被 IDE 发现,但它们也可以被 Apollo Chrome 检查器插件发现。
我将 Apollo Client 与 React 结合使用,graphql-tag loaded with Webpack, and graphql-config 在客户端维护架构。
有一个文件./myclient/src/features/stats/graphql/getStart.graphql
query GetStart {
start @client
}
其中 start
和 @client
不使用 IDE graphql 插件进行验证,因为它们未包含在自动生成的架构中。
./myclient/.graphqlconfig
文件
{
"projects": {
"client": {
"schemaPath": "schema.graphql",
"extensions": {
"endpoints": {
"dev": "http://localhost:3000/graphql"
}
}
}
}
}
Webpack 配置为使用
在客户端加载 graphql 模式{
test: /\.(graphql|gql)$/,
exclude: /node_modules/,
use: 'graphql-tag/loader',
},
它将正确加载服务器架构。但是,如何配置它以验证或忽略导致 Unknown field "start" on object "Query"
和 Unknown directive "@client"
错误的 start @client
?
可以为 Apollo 客户端定义客户端模式,the docs。我创建了一个包含类型定义的文件 ./src/apollo/graphql/typeDefs.graphql
。
directive @client on FIELD
type RestParams {
limit: Int
page: Int
}
extend type Query {
restParams: RestParams
}
我将 typeDefs.graphql
导入到 client.js
文件中,并将 typeDefs
添加到 ApolloClient
构造函数选项中。
import { ApolloClient } from 'apollo-client';
import { ApolloLink } from 'apollo-link';
import { InMemoryCache } from 'apollo-cache-inmemory';
import TYPE_DEFS from './graphql/typeDefs.graphql';
import createHttpLink from './links/httpLink';
import createErrorLink from './links/errorLink';
import createAuthLink from './links/authLink';
const errorLink = createErrorLink();
const httpLink = createHttpLink();
const authLink = createAuthLink();
const cache = new InMemoryCache({});
const client = new ApolloClient({
cache,
link: ApolloLink.from([
authLink,
errorLink,
httpLink,
]),
// resolves,
typeDefs: TYPE_DEFS,
connectToDevTools: true,
});
export default client;
类型定义不能被 IDE 发现,但它们也可以被 Apollo Chrome 检查器插件发现。