[Network error]: TypeError: Network request failed
[Network error]: TypeError: Network request failed
我第一次尝试apollo。
我的后端服务器是 Phoenix 框架(长生不老药)。和 运行 在 http://localhost:4000/api
所以我尝试在我的代码中像这样使用 apollo 进行第一次查询。
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import ApolloClient from 'apollo-boost';
import { gql } from 'apollo-boost';
const client = new ApolloClient(
{
uri: 'http://localhost:4000/api',
}
);
client.query({
query: gql`
{
users {
name
email
}
`}
}).then(result => console.log(result));
但是我得到一个错误。
[Network error]: TypeError: Network request failed
node_modules/expo/build/logs/LogSerialization.js:166:14 in _captureConsoleStackTrace
node_modules/expo/build/logs/LogSerialization.js:41:24 in serializeLogDataAsync
... 9 more stack frames from framework internals
[Unhandled promise rejection: Error: Network error: Network request failed]
http://192.168.1.8:19001/node_modules/expo/AppEntry.bundle?platform=android&dev=true&minify=false&hot=false:124432:28 in new ApolloError
node_modules/apollo-client/bundle.umd.js:1587:12 in <anonymous>
node_modules/apollo-client/bundle.umd.js:2007:12 in info.listeners.forEach$argument_0
<anonymous>:null in Set.forEach
node_modules/apollo-client/bundle.umd.js:2005:17 in queries.forEach$argument_0
<anonymous>:null in Map.forEach
node_modules/apollo-client/bundle.umd.js:2003:11 in QueryManager.prototype.broadcastQueries
http://192.168.1.8:19001/node_modules/expo/AppEntry.bundle?platform=android&dev=true&minify=false&hot=false:125823:31 in <unknown>
node_modules/promise/setimmediate/core.js:37:11 in tryCallOne
node_modules/promise/setimmediate/core.js:123:14 in setImmediate$argument_0
而且在我的服务器日志中什么也没说。我认为我的客户甚至不接触服务器。
我错过了什么?有任何想法吗? :(
事实是,iOS 在模拟器中是 运行,而 Android 在模拟器中是 运行。
本地主机指向代码所在的环境 运行。仿真器模拟真实设备,而模拟器只是模仿设备。
因此 Android 上的本地主机指向模拟的 Android 设备。而不是您的服务器 运行 所在的机器。
解决办法是把localhost换成你机器的IP地址。
尝试将 http://localhost:4000
更改为 http://10.0.2.2:4000/
我第一次尝试apollo。 我的后端服务器是 Phoenix 框架(长生不老药)。和 运行 在 http://localhost:4000/api 所以我尝试在我的代码中像这样使用 apollo 进行第一次查询。
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import ApolloClient from 'apollo-boost';
import { gql } from 'apollo-boost';
const client = new ApolloClient(
{
uri: 'http://localhost:4000/api',
}
);
client.query({
query: gql`
{
users {
name
email
}
`}
}).then(result => console.log(result));
但是我得到一个错误。
[Network error]: TypeError: Network request failed
node_modules/expo/build/logs/LogSerialization.js:166:14 in _captureConsoleStackTrace
node_modules/expo/build/logs/LogSerialization.js:41:24 in serializeLogDataAsync
... 9 more stack frames from framework internals
[Unhandled promise rejection: Error: Network error: Network request failed]
http://192.168.1.8:19001/node_modules/expo/AppEntry.bundle?platform=android&dev=true&minify=false&hot=false:124432:28 in new ApolloError
node_modules/apollo-client/bundle.umd.js:1587:12 in <anonymous>
node_modules/apollo-client/bundle.umd.js:2007:12 in info.listeners.forEach$argument_0
<anonymous>:null in Set.forEach
node_modules/apollo-client/bundle.umd.js:2005:17 in queries.forEach$argument_0
<anonymous>:null in Map.forEach
node_modules/apollo-client/bundle.umd.js:2003:11 in QueryManager.prototype.broadcastQueries
http://192.168.1.8:19001/node_modules/expo/AppEntry.bundle?platform=android&dev=true&minify=false&hot=false:125823:31 in <unknown>
node_modules/promise/setimmediate/core.js:37:11 in tryCallOne
node_modules/promise/setimmediate/core.js:123:14 in setImmediate$argument_0
而且在我的服务器日志中什么也没说。我认为我的客户甚至不接触服务器。 我错过了什么?有任何想法吗? :(
事实是,iOS 在模拟器中是 运行,而 Android 在模拟器中是 运行。
本地主机指向代码所在的环境 运行。仿真器模拟真实设备,而模拟器只是模仿设备。 因此 Android 上的本地主机指向模拟的 Android 设备。而不是您的服务器 运行 所在的机器。 解决办法是把localhost换成你机器的IP地址。
尝试将 http://localhost:4000
更改为 http://10.0.2.2:4000/