React Native [网络错误]:TypeError:使用 Apollo Client 的网络请求失败

Mar*_*ner 2 react-native react-apollo apollo-client expo

我只想使用 React Native 和 Expo 连接到本地主机上的 Apollo 服务器。

如果我尝试使用以下 api 链接,https://q815p14lp.lp.gql.zone/graphql它可以正常工作。但是,如果我尝试使用http://127.0.0.1:8080/graphqlhttp://localhost:8080/graphql出现以下错误:[Network error]: TypeError: Network request failed

这是我尝试连接的代码。

const httpLink = new HttpLink({ uri: 'http://127.0.0.1:8080/graphql' });

const authLink = setContext(async (_, { headers }) => {
  const token = await getToken();

  return {
    headers: {
      ...headers,
      authorization: token ? `Bearer ${token}` : null,
    }
  };
});

const errorLink = onError(({ networkError, graphQLErrors }) => {
  if (graphQLErrors)
    graphQLErrors.map(({ message, locations, path }) =>
      console.log(
        `[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`
      )
    );
  if (networkError) console.log(`[Network error]: ${networkError}`);
})

const client = new ApolloClient({
  link: ApolloLink.from([errorLink, authLink, httpLink]),
  cache: new InMemoryCache()
});

"apollo-boost": "^0.1.18",
"apollo-link-context": "^1.0.9",
"apollo-link-error": "^1.1.1",
"expo": "^30.0.1",
"react-apollo": "^2.2.4",
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?

Jes*_* We 5

主机*.lp.gql.zone是 Launchpad graphql 服务器。因此,您的服务器在 Launchpad 上运行,而不是在本地计算机上运行。

使用 Expo 连接到本地机器也没有多大意义。在这种情况下,“本地主机”是运行应用程序的电话设备。

我猜你真正想要的是让设备上的 Expo 应用程序连接到你的 mac/pc 上的开发 graphql 服务器?在这种情况下,您应该使用在调试视图中看到的 IP 地址:

在此处输入图片说明

在这种情况下,您的连接网址变为: http://10.10.9.70:8080/graphql