[网络错误]:类型错误:网络请求失败 [英] [Network error]: TypeError: Network request failed

查看:35
本文介绍了[网络错误]:类型错误:网络请求失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我第一次尝试阿波罗.我的后端服务器是 Phoenix 框架(长生不老药).并在 http://localhost:4000/api 中运行所以我尝试在我的代码中使用 apollo 进行第一个查询.

I am trying apollo for the first time. My backend server is Phoenix framework(elixir). and running in http://localhost:4000/api So I tried to do a first query using apollo like this in my code.

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));

但是我遇到了一个错误.

But I got an error.

[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

在我的服务器日志中什么也没说.我认为我的客户甚至不接触服务器.我错过了什么?有任何想法吗?:(

And in my server log said nothing. I think my client doesn't even touch the server. What am I missing? any ideas? :(

推荐答案

事实是,iOS 在模拟器中运行,而 Android 在模拟器中运行.

The thing is, that iOS is running in a simulator and Android is running in an emulator.

本地主机指向代码运行的环境.模拟器模拟真实设备,而模拟器只是模仿设备.因此,Android 上的 localhost 指向模拟的 Android 设备.而不是运行服务器的机器.解决办法是用你机器的IP地址替换localhost.

The localhost is pointing to the environment in which the code is running. The emulator emulates a real device while the simulator is only imitating the device. Therefore the localhost on Android is pointing to the emulated Android device. And not to the machine on which your server is running. The solution is to replace localhost with the IP address of your machine.

尝试将 http://localhost:4000 更改为 http://10.0.2.2:4000/

这篇关于[网络错误]:类型错误:网络请求失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆