iOS 上的 React Native Expo 网络请求失败

Posted

技术标签:

【中文标题】iOS 上的 React Native Expo 网络请求失败【英文标题】:Network requests failed with React Native Expo on iOS 【发布时间】:2019-01-11 10:39:32 【问题描述】:

有一些相关的问题,但没有一个回答我的问题,所以我想让我们自己问一些细节。

我正在使用 Expo SDK 构建 React Native。我正在使用 localhost GraphQL API,但似乎 ios prevents fetching 数据来自 http 端点。根据消息来源和其他相关问题,您必须在 iOS 版本中将 add 内容添加到您的 info.plist 文件中。

但由于我使用的是 Expo SDK,因此我没有 iOS 版本。 According to the docs,您可以将infoPList 对象添加到您的app.json。 This 的回答也暗示了这一点。

所以我在app.js 中添加了以下内容,但没有成功:


"ios": 
    "supportsTablet": false,
    "infoPlist": 
        "NSAllowsArbitraryLoads": 
            "NSAllowsArbitraryLoads": true
        
    


我仍然收到相同的“网络请求失败”错误。有人知道不弹出的解决方案吗?

【问题讨论】:

不要认为您需要编辑任何配置。您提到您正在使用本地主机。您是否使用真实设备进行测试?您的 api 端点是使用 localhost 还是本地 ip?因为设备中的 localhost 实际上并不指向你的本地开发服务器 我在手机上使用 expo 应用程序,但没有成功。可以在模拟器上测试,但不知道这是否重要。你觉得我怎么能修好?确实使用 localhost。 就是这样。该应用程序正在您的手机上运行,​​我猜您的本地开发服务器正在您的电脑上运行。您的手机正在使用 localhost 发出 http 请求,但它没有指向您的电脑。你应该确保你的手机和电脑在同一个局域网下,并将localhost更改为你的电脑的ip。 太棒了,你是对的。我发现我前段时间在我的个人电脑上解决了这个问题,但我忘记了这一点,昨天无法访问我的个人电脑。如果您可以将问题解释为 aswer,我将选择它作为正确答案:) 谢谢。添加了答案:) 【参考方案1】:

问题是您设备上的 localhost 没有指向您在另一台机器上的本地开发服务器。要解决这个问题,您应该确保您的测试移动设备和开发服务器在同一个本地网络下,并将 localhost 更改为开发服务器机器的 ip。

【讨论】:

【参考方案2】:

我遇到了完全相同的问题,我使用 fetch () 将我的数据从我的本机 react 应用程序发送到我的 php 服务器,我从我的 IOS 手机使用 expo 进行模拟,但是我在配置时收到与您相同的错误正确的 IPV4 地址 (fetch (http://ipv4 address / ...) ) 而不是 localhost... 此外,当我在我的电脑上模拟 Web 视图并输入 fetch (http://localhost/..) 时,我收到的数据一切正常..

【讨论】:

以上是关于iOS 上的 React Native Expo 网络请求失败的主要内容,如果未能解决你的问题,请参考以下文章

Expo React Native App在android上崩溃

React Native 和 Expo - SVG 不会在 iOS 设备上呈现

在 iOS 上带有 expo 的 react-native statusBar

React Native Expo branch.io

使用 React Native + Expo 时,iOS API 在哪里访问?

Expo / React Native WebView,动画中的onPress事件在Android上不起作用