Expo LAN 配置不适用于新的 React Native 项目
Posted
技术标签:
【中文标题】Expo LAN 配置不适用于新的 React Native 项目【英文标题】:Expo LAN configuration doesn't work for New ReactNative Project 【发布时间】:2018-06-06 14:32:12 【问题描述】:我在 *** 上看到过类似的问题,但都没有解决问题。我刚刚从 Expo 桌面应用程序创建了新的 ReactNative 项目。但是当 Expo 配置设置为 LAN 模式时,我无法通过 QR 码扫描在我的 android 手机上运行它。在我的 Android 手机上似乎无法访问(看起来像)。我的手机在同一个 Wifi 网络上。
我也尝试通过关闭防火墙来运行 Expo 演示应用,但仍然没有成功。我相信你的一个技术外观可能会解决我的问题。
注意:Expo 隧道已关闭,这就是它在 LAN 模式下加载的原因。几天前,我尝试了有效的隧道模式。但是,当时局域网也没有工作。所以可能任何人都可以指出我正确的方向,所以我可以在 LAN 模式下运行它(在同一 Wifi 网络上的电话和机器上)。
【问题讨论】:
@mano 帮了大忙,所以 +1。但是有目的的解决方案并没有解决与 Expo 桌面工具相关的问题。问题仍然存在,并没有解决。然而,Expo CLI 工具解决了我的问题并允许我设置一个功能开发环境。因此,参考其他有类似问题并寻找解决方案的人;我现在将 Expo CLI 标记为建议的解决方案(Expo 也推荐),直到有人为 Expo 桌面应用程序发布正确的解决方案。 【参考方案1】:我不确定这对你有没有帮助,但就我而言,这对我有帮助,所以你也可以试试这个:
1:首先你要提高WiFi Adapter优先级(Interface Metric)
转到控制面板 > 网络和 Internet > 网络连接
步骤1)如上图右击wi-fi并右击>点击属性
步骤 2) 选择 Internet 协议版本 4 并 > 单击属性
步骤 3) 点击 > 高级
第 4 步)
-
取消选中“自动指标”
在“接口指标”中输入 5
点击确定
2:您必须将 wifi 网络配置文件从公共更改为私有
第 1 步)从可用的 WiFi 网络中选择您的网络,然后单击“属性”
第 2 步)将您的网络配置文件从公共更改为私有
就是这样,现在在 LAN 上运行您的 expo 项目,它将 100% 运行
【讨论】:
它对我有用,谢谢你节省了我很多时间,【参考方案2】:由于虚拟适配器网络被用作首选子网,您的 Android 手机无法访问服务器。
增加 WiFi 适配器的优先级,它应该可以正常运行。 (取消选中高级适配器设置中的自动指标并为接口指标分配一个较小的数字)。
查看此链接: Adapter priority setting unavailable in Windows 10
【讨论】:
我按照说明更改了适配器优先级,如前所述。现在看起来 Expo 桌面应用程序正在显示正确的本地 IP(在其设置地址栏中),因此现在 Expo 设置显示:exp://192.168.100.7:19000 但是如果我尝试在手机上加载,它会显示相同的错误屏幕但使用新的服务器 IP (192.168.100.7)。我的机器上的防火墙已关闭。还有什么可看的吗?更改适配器设置后,我确实重新启动了机器。 尝试在手机上杀死expo应用,然后通过扫描二维码重试。我认为它应该有效。 我已经杀死了安卓手机中的 Expo 应用程序,尝试再次使用二维码加载但没有成功。我也尝试过关闭桌面应用程序,但没有成功。但是,当我 ping(使用实用程序应用程序)我的本地 IP 192.168.100.7 时,它会在电话上返回成功。只有世博会没有加载应用程序。在错误日志(在移动设备中)中显示:could not load exp://192.168.100.7:19000
在 Expo 桌面应用程序加载项目运行的同时,我是否需要运行任何其他命令?但我不这么认为,因为我是通过 Expo 桌面应用程序创建项目的。
还有其他日志吗?尝试运行基本应用程序。还将 XDE 和 Expo 应用程序升级到最新版本以避免任何不匹配问题。
我试过 Expo CLI 工具,效果很好。我将等待适用于 XDE 桌面应用程序的任何合适的解决方案,因为它仍然无法帮助在移动设备中加载应用程序。我觉得二维码可能有问题。我已经发布了我的 CLI 解决方案。【参考方案3】:
在 XDE 桌面应用程序中挣扎但没有成功。最后决定尝试这里提到的 Expo CLI 工具:https://expo.io/learn 通过几个简单的步骤,它为我创建了第一个演示项目。
并在此处执行 CLI 命令:https://docs.expo.io/versions/latest/guides/exp-cli.html
我现在可以使用简单的命令运行我的第一个演示应用程序,例如exp start --dev --lan
,它与 XDE(Expo 桌面)应用在配置 LAN 和开发人员模式设置方面所做的工作相同。
除了 Expo CLI 工具外,我已经完成了所有可能的解决方案,但没有为我设置 LAN 连接。任何人面临类似的问题?请去试试 CLI。但请确保检查您的网络适配器优先级设置(因为 VMWare/VBox 网络适配器的优先级确实会产生问题)。正如@mano 所提议的那样。
【讨论】:
【参考方案4】:我在我的 Ubuntu/Crouton 设置中大致遇到了这个问题,问题是我有一个本地防火墙阻止了该端口。
解决方法是使用 iptables 打开端口,如下所示:
$ sudo apt-get install iptables
$ sudo /sbin/iptables -I INPUT -p tcp --dport 19000 -j ACCEPT
更多信息在这里:https://github.com/dnschneid/crouton/wiki/Running-servers-in-crouton
我可以想象其他平台也可能需要类似的解决方案。
【讨论】:
【参考方案5】:在 Windows 10 上:
-
您应该点击连接属性:
-
然后在 Network Profile 中将 Networking Connection 从 Public 更改为 Private。
【讨论】:
说起来容易做起来难,网络配置文件在哪里?是 Windows 10 吗?究竟从哪里开始?我打开了网络连接,看到了 Wi-Fi,然后呢? @joedot 对缺少信息感到抱歉。我刚刚更新了上面的答案。 感谢您花时间更新。奥布里加多!【参考方案6】:在 Windows 10 中,我遇到了同样的问题。我做了这些任务:
更改了网络接口的优先级。
How to change the priority order of network adapters on Windows 10
之前:
之后:
手机和电脑必须在同一网络上(检查掩码)。 就我而言,Virtual Box 改变了优先级。
我关闭了防火墙并检查并看到应用程序正在运行。然后我对防火墙进行了正确的调整。
【讨论】:
【参考方案7】:FWIW,对我来说,我已将 nodejs 设置为“仅允许通过专用网络进行连接”,但我的 Windows 机器上的 wifi 网络未设置为专用。我将它从公共更改为私有,然后重新启动应用程序,然后它就可以正常工作了。
【讨论】:
【参考方案8】:在 OS X 上,原来防火墙阻止了我的 19000 端口。去
设置 > 安全和隐私
然后关闭防火墙解决了它。
【讨论】:
此解决方案证明 macOS 防火墙阻止了来自 iPhone Expo 应用程序的连接。不过,我不想让它关闭。我应该“允许传入连接”哪个特定的应用程序?【参考方案9】:在我的 android 中它曾经可以工作,但有一天它停止并在 android 重启后开始工作。
【讨论】:
【参考方案10】:我遇到了同样的问题。您应该关闭防火墙公共或进一步设置入站出站。
【讨论】:
【参考方案11】:我能够以某种方式找出问题所在。您只需要执行ipconfig /all
(windows) 或ifconfig
(Unix) 并检查无线 LAN 适配器 WIFI IPV4 地址并将 exp URL 中的主机替换为它。
exp://192.168.84.161:19000
(这个在展会开始时发布的 URL 使用的是以太网 IPV4 地址,而不是无线 LANIPV4 192.168.0.10)。
更改主机并在 safari 上直接点击它会打开一个 expo 应用并成功加载 react 应用。
【讨论】:
【参考方案12】:如果您是 Windows 用户,请确保您的防病毒防火墙已被禁用。
【讨论】:
【参考方案13】:就我而言,我的 PC 上安装了 Docker 桌面客户端。我刚刚从我的电脑上卸载了 Docker,它正在工作。
【讨论】:
【参考方案14】:对我来说,它只能禁用所有其他网络适配器。
我的 Windows 电脑有多个网络接口,并且 LAN URL 指向的不是移动设备可以连接的网络接口。
(设置 REACT_NATIVE_PACKAGER_HOSTNAME 环境变量或设置适配器的优先级对我不起作用)
当然,我是在专用网络上,并且在我配置它之前已经为它禁用了防火墙。
【讨论】:
以上是关于Expo LAN 配置不适用于新的 React Native 项目的主要内容,如果未能解决你的问题,请参考以下文章
无法在 LAN React Native 上运行我的 Expo 应用程序
React native fetch api 不适用于 localhost、IP 甚至 10.0.2.2
React - 新的 Context API 不适用于 Class.contextType,但适用于 Context.Consumer
Apollo 客户端订阅适用于 Playground,但不适用于 Expo 应用程序
expo-auth-session/providers/google 不适用于独立应用程序:invalid_scheme