17

我使用 Expo XDE 创建了一个项目。我检查了这个无法加载 expo 应用程序:出了点问题,但我已经启用了“绘制其他应用程序”。当我扫描此 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:

谁能帮我出了什么问题?

4

20 回答 20

21

您最好打开 XDE Client 并启用开发模式。然后,单击灰色齿轮以使主机 > LAN(局域网 - 这意味着通过 WiFi 与真实设备共享包)。

本地主机选项也可以工作,但根据Expo Debugging 文档

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

此外,这是我几个月前写的一个视觉信息丰富的答案,可能也有帮助:如何使用 Expo 在真实的 iOS 设备上运行应用程序?

于 2017-06-30T07:10:13.417 回答
14

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

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

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

现在只要你想加载一个应用程序,你可以复制相同的地址并在 Expo 中打开它。

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

希望这可以帮助。

于 2019-02-17T19:56:13.393 回答
9

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

打开终端并运行

ipconfig

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

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

  2. 右键单击您的主局域网

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

  4. 单击属性 > 高级

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

  6. 在“接口度量”中输入 10

  7. 点击确定

于 2018-12-09T07:29:20.733 回答
7

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

在此处输入图像描述

于 2018-10-24T12:35:38.037 回答
4

我想很多人一定已经完成了上述所有操作,但仍然有出错的错误

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

在此处输入图像描述

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

于 2019-04-08T12:00:57.303 回答
2

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

于 2020-05-24T11:36:18.187 回答
1

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

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

于 2019-01-06T12:10:05.350 回答
1

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

于 2019-05-22T06:20:29.463 回答
1

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

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

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

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

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

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

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

于 2019-12-28T18:56:47.637 回答
1

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

于 2020-03-16T23:08:14.893 回答
0

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

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

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

exp://10.0.0.125:19000   and
ipconfig -> IPv4 Address. . . . . . . . . . . : 10.0.0.125
于 2018-02-18T05:24:19.303 回答
0

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

于 2018-08-26T00:10:26.470 回答
0

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

于 2018-10-08T03:20:28.813 回答
0

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

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

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

于 2018-10-20T12:29:55.837 回答
0

就我而言,它是 VPN - 在成功加载后,我已将我的手机与 VPN 连接起来!

于 2019-05-14T18:00:08.317 回答
0

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

于 2019-07-15T07:25:19.277 回答
0

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

于 2020-08-25T05:46:40.040 回答
0

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

于 2020-09-27T06:38:43.747 回答
0

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

于 2021-04-24T15:28:49.883 回答
-1

我通过更新 npm 和 node 解决了我的问题。

于 2019-02-20T03:17:46.600 回答