无法从 Apollo 客户端从非 Apollo GraphQL 服务器查询
Unable to query from non-Apollo GraphQL server from Apollo client
我尝试使用 Apollo Client 向非 Apollo GraphQL 服务器发出请求,如下所示:
import ApolloClient, { createNetworkInterface } from 'apollo-client';
// Register gql globally
import { registerGqlTag } from 'apollo-client/gql';
registerGqlTag();
const networkInterface = createNetworkInterface(' http://localhost:8080/graphql', {
headers: {
'Content-type': "application/json"
}
});
var client = new ApolloClient({
networkInterface
});
client.query({
query: gql`
query getTodo($todoId: Int!) {
node(id: $todoId) {
... on Todo {
id
text
}
}
}
`,
variables: {
todoId: "todo:100000",
},
forceFetch: false,
}).then((graphQLResult) => {
var errors = graphQLResult.errors;
var data = graphQLResult.data;
if (data) {
console.log('got data', data);
}
if (errors) {
console.log('got some GraphQL execution errors', errors);
}
}).catch((error) => {
console.log('there was an error sending the query', error);
});
但是我在 运行 代码时不断收到错误消息:
there was an error sending the query [ReferenceError: fetch is not defined]
我尝试搜索与此相关的问题,但文档并没有真正帮助。
先谢谢了。
在幕后,Apollo 客户端使用 fetch
,这是围绕发出 http 请求的新标准。它存在于大多数主流浏览器中,但在节点或 IE / Edge 中找不到。该团队呼吁使用 fetch,因为它的采用率正在增长,并且 polyfill 可用于旧版浏览器和节点。
我们在此处围绕此问题在文档中添加了一个部分:http://docs.apollostack.com/apollo-client/core.html#fetch-polyfill
要了解使用 fetch 的决定,请查看此问题:https://github.com/apollostack/apollo-client/pull/126
如果您在节点环境中工作,则需要将提取添加到 global
object:
import fetch from 'node-fetch';
global.fetch = fetch;
我尝试使用 Apollo Client 向非 Apollo GraphQL 服务器发出请求,如下所示:
import ApolloClient, { createNetworkInterface } from 'apollo-client';
// Register gql globally
import { registerGqlTag } from 'apollo-client/gql';
registerGqlTag();
const networkInterface = createNetworkInterface(' http://localhost:8080/graphql', {
headers: {
'Content-type': "application/json"
}
});
var client = new ApolloClient({
networkInterface
});
client.query({
query: gql`
query getTodo($todoId: Int!) {
node(id: $todoId) {
... on Todo {
id
text
}
}
}
`,
variables: {
todoId: "todo:100000",
},
forceFetch: false,
}).then((graphQLResult) => {
var errors = graphQLResult.errors;
var data = graphQLResult.data;
if (data) {
console.log('got data', data);
}
if (errors) {
console.log('got some GraphQL execution errors', errors);
}
}).catch((error) => {
console.log('there was an error sending the query', error);
});
但是我在 运行 代码时不断收到错误消息:
there was an error sending the query [ReferenceError: fetch is not defined]
我尝试搜索与此相关的问题,但文档并没有真正帮助。
先谢谢了。
在幕后,Apollo 客户端使用 fetch
,这是围绕发出 http 请求的新标准。它存在于大多数主流浏览器中,但在节点或 IE / Edge 中找不到。该团队呼吁使用 fetch,因为它的采用率正在增长,并且 polyfill 可用于旧版浏览器和节点。
我们在此处围绕此问题在文档中添加了一个部分:http://docs.apollostack.com/apollo-client/core.html#fetch-polyfill
要了解使用 fetch 的决定,请查看此问题:https://github.com/apollostack/apollo-client/pull/126
如果您在节点环境中工作,则需要将提取添加到 global
object:
import fetch from 'node-fetch';
global.fetch = fetch;