【问题标题】:Could not load exp:// Something went wrong无法加载 exp:// 出了点问题
【发布时间】:2017-11-22 12:27:43
【问题描述】:

我使用 Expo XDE 创建了一个项目。我检查了这个Can't load expo app: Something went wrong,但我已经启用了“绘制其他应用程序”。当我扫描此 QR 码时它可以工作 https://expo.io/@ajaysaini/first-proj 但当我从 XDE 在 android 设备上运行它时它不起作用。

main.js

import Expo from 'expo';
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';

class App extends React.Component {
  render() {
    return (
      <View style={styles.container}>
        <Text>Updating!</Text>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

Expo.registerRootComponent(App);

当我在设备上运行它时,它在 android 设备上显示以下错误。我多次尝试在 XDE 中重新启动,但没有帮助。

Dependency graph loaded.
11:19:21 AM
Starting React Native packager...
11:19:24 AM
Scanning 528 folders for symlinks in D:\Expo\first-proj\first-proj\node_modules (18ms)
11:19:24 AM
Loading dependency graph.
11:19:24 AM
Running packager on port 19001.
11:19:25 AM
11:19:33 AM
Project opened! You can now use the "Share" or "Device" buttons to view your project.
11:19:44 AM
Opening on Android device
11:19:54 AM
Dependency graph loaded.
11:21:41 AM
Opening on Android device
11:23:31 AM
Opening on Android device

错误:

There was an unhandled error: Could not load exp://
Stack Trace:

谁能帮我看看怎么回事?

【问题讨论】:

  • 你尝试本地连接了吗?
  • @EnieJakiro 我尝试使用 localhost 连接,但对我不起作用
  • 是否选择了开发模式?而不是 localhost,尝试使用 LAN,您应该会看到类似 exp://192.168.201.102:19000 的内容
  • 啊局域网工作了..
  • 这是因为 localhost 仅适用于该设备,您的 Android 试图连接自己的 localhost。很高兴这有帮助

标签: android react-native expo


【解决方案1】:

您最好打开 XDE 客户端并启用开发模式。然后,点击灰色齿轮,制作Host > LAN(局域网——这意味着通过WiFi与真实设备共享包)。

本地主机选项也可以,但根据Expo Debugging docs

如果您使用的是 LAN,请确保您的设备与您的开发机器在同一个 wifi 网络上。这可能不适用于某些公共网络。 localhost 将不适用于 iOS,除非您在模拟器中,并且仅当您的设备通过 USB 连接到您的机器时,它才适用于 Android。

另外,这是我几个月前写的一个视觉信息丰富的答案,可能也有帮助:How do I run an app on a real iOS device using Expo?

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,但没有一个解决方案对我有用。这里的问题是 Expo 显示错误的 IP 地址,您的手机无法连接。

    这就是我解决它的方法。我将假设您在 Windows 上并使用 LAN 在您的设备上运行应用程序。

    1. 打开cmd,输入ipconfig,找到你的本地IP。它应该是 在Wireless LAN Adapter 部分下列为IPv4 Address。它 看起来像192.168.xx.x
    2. 现在打开手机中的任何文本编辑器并输入 exp://192.168.xx.x:19000。将此文本复制到剪贴板。
    3. 打开 Expo 应用程序。您现在将看到 Open from Clipboard 选项 顶端。按下它,您的应用应该会加载。

    现在任何时候你想加载一个应用,你都可以复制相同的地址并在 Expo 中打开它。

    我发现了另一种更简单的解决方法。运行命令 set REACT_NATIVE_PACKAGER_HOSTNAME=192.168.xx.xexpo start 之前。这 将在 Expo Dev Tools 中设置正确的 IP。

    希望这会有所帮助。

    【讨论】:

    • set REACT_NATIVE_PACKAGER_HOSTNAME=192.168.xx.x 为我工作!!
    【解决方案3】:

    有时问题是由于使用了错误的网络适配器优先级。

    打开终端并运行

    ipconfig
    

    如果您的主 LAN 适配器未列为第一个适配器,则更改适配器优先级可能会解决问题。只需按照以下步骤操作:

    1. 转到控制面板 > 网络和 Internet > 网络连接

    2. 右键单击您的主 LAN

    3. 单击属性 > Internet 协议版本 4

    4. 单击属性 > 高级

    5. 取消选中“自动指标”

    6. 在“接口指标”中输入 10

    7. 点击确定

    【讨论】:

    • 谢谢您,先生!是的,这对我来说是正确的解决方法。每当我切换网络时,expo 就会停止共享,有时会保留最后一个 IP 地址(错误的,不同的)以供服务。我不知道该缓存的确切位置,我还尝试将 REACT_NATIVE_PACKAGER_HOSTNAME 手动设置为其中一个 IP 地址,但每次切换网络时都需要更改此设置。
    • 谢谢!这也解决了我的问题。原来我的 Virtual Box 网络处于最高优先级
    【解决方案4】:

    可能是您的网络不支持 LAN 通信。将 LAN 切换到本地对我有用。 From your MAC you can go to http://localhost:[portnumber] 如下图所示。

    【讨论】:

      【解决方案5】:

      我想很多人一定做了以上所有事情,但仍然有出了什么问题

      文档可能已指定何时在本地构建并且您的设备已连接到您的机器,您应该点击显示 QR 码图像的网页调试页面上的本地部分。

      然后点击本地后,再次尝试扫描二维码,您的错误应该会消失并显示加载捆绑的 javascripts 资产。

      【讨论】:

        【解决方案6】:

        我尝试了此处给出的建议,但不适合我的问题。 这对我有用。转到运行 localhost:19002 的浏览器并将连接更改为 Tunnel。扫描从您的手机生成的新二维码。 希望这会有所帮助!

        【讨论】:

          【解决方案7】:

          假设:通过 NPM/Yarn 在计算机上安装 Expo (https://expo.io) 并在 Android/iPhone 上安装 Expo。 另外,手机和电脑在同一个wifi网络上。

          我的电脑是通过 WiFi 连接的,这对我来说是个问题。 Windows:命令行:$ ipconfig 查找您计算机的 Wifi IP 地址。我的是 Ip v4:192.168.1.xxx 在 Phones 网络浏览器 URL 上输入网络浏览器:exp://192.168.1.xxx:19000 然后应该会看到一些文字,这意味着手机正在通过网络连接(好兆头) 然后在手机上打开 expo,应该会通过剪贴板看到链接。 点击手机Expo程序中的剪贴板链接。 然后它应该在您的手机上加载应用程序。 这对我有用。 P.s 在第一次工作时,请按照说明授予 Expo 许可等。

          【讨论】:

            【解决方案8】:

            如果你们使用防火墙,请确保将 19000 和 19001 端口列入白名单。

            【讨论】:

            • 这是我在 Ubuntu 上的问题。使用sudo ufw allow 19000(对于端口1900119002 使用相同的命令)来解锁所需的端口。然后它立即起作用。
            【解决方案9】:

            在“开始”菜单上,单击“运行”,键入 WF.msc,然后单击“确定”。

            在高级安全 Windows 防火墙的左窗格中,右键单击入站规则,然后单击操作窗格中的新建规则

            在“规则类型”对话框中,选择端口,然后单击“下一步”。

            在“协议和端口”对话框中,选择 TCP。选择所有本地端口,点击下一步。

            在“操作”对话框中,选择“允许连接”,然后单击“下一步”。

            在“配置文件”对话框中,选择任何描述计算机连接的配置文件 连接到数据库引擎时的环境,然后单击“下一步”。

            在“名称”对话框中,键入此规则的名称和说明,然后单击“完成”。

            【讨论】:

              【解决方案10】:

              我建议在运行 Yarn 之前删除 .expo 文件夹:)

              【讨论】:

                【解决方案11】:

                我通过 React Native 团队的推荐解决了同样的问题 - 安装和运行 Genymotion 软件::

                1. 使用 VirtualBox 安装 Genymotion
                2. 在 Genymotion 网站注册
                3. 运行 Genymotion 软件并!!!登录
                4. 关闭带有项目的 npm 提示程序并重新启动它
                5. npm start(在项目目录的 npm promt 窗口中)
                6. 关闭并启动 Expo 应用,扫描条形码

                如果我的应用程序运行成功,IpV 地址是相同的,例如:

                exp://10.0.0.125:19000   and
                ipconfig -> IPv4 Address. . . . . . . . . . . : 10.0.0.125
                

                【讨论】:

                  【解决方案12】:

                  如果有人遇到类似问题,我的问题必须与允许 node.js 连接到网络有关,并且它起作用了。

                  【讨论】:

                    【解决方案13】:

                    由于某种原因,我与 docker 产生了冲突,我禁用了它并且它没有问题,我几乎可以肯定它是 hyper-V

                    【讨论】:

                      【解决方案14】:

                      也许这有助于简单地解释一下,如果您的手机和计算机位于不同的网络上,则会发生此类错误。

                      我通过网络共享解决了这个问题,这样我的两台设备不在同一个网络上。

                      这意味着您可能可以将两个设备连接到它应该工作的同一个 WiFi。

                      【讨论】:

                        【解决方案15】:

                        在我的情况下,它是 VPN - 在成功加载后,我已将我的手机与 VPN 连接起来!

                        【讨论】:

                          【解决方案16】:

                          确保您的笔记本电脑和安卓设备连接到同一个网络,这应该可以解决问题,就像它刚刚为我所做的那样。

                          【讨论】:

                            【解决方案17】:

                            将我的家庭网络从“公共”更改为“私人”对我有用。 打开您的网络连接 -> 右键单击​​您的家庭网络连接 -> 属性 -> 将“网络配置文件”从“公共”更改为“私有”

                            【讨论】:

                              【解决方案18】:

                              检查您是否在电脑或手机上运行 VPN 将其关闭然后重新启动。对我来说,这解决了我的问题。

                              【讨论】:

                                【解决方案19】:

                                我使用隧道而不是局域网或本地,它在我扫描代码后工作并开始构建应用程序。

                                【讨论】:

                                  【解决方案20】:

                                  我通过更新 npm 和节点解决了我的问题 ..

                                  【讨论】:

                                  • 如果这对你有用,你能发布你运行的命令吗?
                                  猜你喜欢
                                  • 1970-01-01
                                  • 2020-05-16
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2016-01-01
                                  • 2011-11-04
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  相关资源
                                  最近更新 更多