开发者问题收集

React Native 应用程序无法在 Expo 应用程序中启动

2018-01-18
2859

我有安装了 Expo 的 HTC M8,我想在其上测试用 React Native 编写的应用程序。我在控制台中运行我的应用程序,扫描二维码并尝试从我的智能手机连接到我的应用程序 - 不幸的是,我看到一个错误,提示无法加载 exp://myaddress:port。

我使用的是 Windows 10,我的电脑和智能手机都连接到同一个 WiFi 网络。

这是 ipconfig 命令的结果:

Ethernet adapter Ethernet:
   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : myhostname.net

Wireless LAN adapter Wi-Fi:
   Connection-specific DNS Suffix  . : myhostname.guest
   Link-local IPv6 Address . . . . . : fe80::8136:d112:d190:5fd8%17
   IPv4 Address. . . . . . . . . . . : 10.168.4.171
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 10.168.4.1

Ethernet adapter Ethernet 6:
   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Wireless LAN adapter Local Area Connection* 1:
   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Ethernet adapter Ethernet 3:
   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Ethernet adapter Bluetooth Network Connection:
   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Tunnel adapter Local Area Connection* 11:
   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::1c40:2198:f557:fb54%11
   Default Gateway . . . . . . . . . :

这是运行 npm start 的结果:

(...) Or enter this address in the Expo app's search bar:

  exp://10.168.4.171:19000

不幸的是,我无法从安装在智能手机上的 Expo 应用程序访问我的应用程序。

我已经尝试过了:

  • 在我的 PC 上卸载 VirtualBox
  • 更改网络适配器的优先级,使 WiFi 具有最高优先级

我仍然无法通过 Expo 应用程序运行我的应用程序。但是,在我的 PC 上安装 Expo 应用解决了这个问题 - 它显示的二维码与控制台上的二维码不同,我可以运行我的 React Native 应用,但我想从我的智能手机上的 Expo 应用运行我的应用。

编辑: 我在另一台装有 Win10 的 PC 上试过。安装了 create-react-native-app,运行它,它通过 WiFi 完美运行。

2个回答

来源: https://github.com/react-community/create-react-native-app/issues/60#issuecomment-317104728 我读过 Himujjal 的解决方案,它对我有用: 以下步骤肯定会有所帮助。我遇到了同样的问题,并能够在 Windows 10 操作系统中解决它。我的电脑上安装了 Virtual Box,但我无法在我的 android expo 客户端中运行 CRNA。因此,

  1. 首先,我通过移动热点连接了笔记本电脑。
  2. 然后进入控制面板 > (搜索“网络连接”) > 网络连接
  3. 右键单击“Wifi”> 选择“属性”> “Internet 协议版本 4 (TCP/IPv4)”[不要取消选中标记]
  4. 转到“属性”> “高级...”> (取消选中“自动度量”) > 在下面 (接口度量) 的文本框中输入:10。
  5. 单击“确定”和“确定”再单击“确定”:)
  6. 然后对其他“Virtual Box-xxxxx”网络执行相同操作。但请在“接口度量”文本框中输入 20。
  7. 单击“确定”、“确定”和“确定”。

尝试在 Expo 上重新启动您的应用。它现在一定可以正常工作了!

Tarek El-Mallah
2018-07-21

我不确定您是否已经找到答案,但我希望这可以帮助面临同样情况的人。罪魁祸首是网络适配器。网络适配器有一种称为接口度量的东西,接口度量越低,适配器的优先级越高。 我从 Windows 的角度写这个答案。正如您所提到的,您的电脑和手机连接到同一个 Wi-Fi 网络,您无法在手机上访问应用程序的原因是启动服务器时获取的本地 IP 未分配给您想要的适配器。

  • 以下解决方案对我有用:
    1. 以管理员身份启动命令提示符,键入 powershell。
    2. 键入 Get-NetIPInterface:这将为您提供网络适配器、其索引号及其接口指标的列表
    3. 通过以下命令将无线适配器的接口指标更改为最小值:Set-NetIPInterface -InterfaceIndex "your_wifi_adapter_interface_index" -InterfaceMetric "MinimumValue"
    4. 在打开 npm 的控制台选项卡中键入“r”,以便重新启动打包程序。
    5. 瞧!它有效。
Anshul Dupare
2018-05-24