React Native Expo 更改默认 LAN IP

React Native Expo change default LAN IP

我已经安装了虚拟盒子。当我查看主机 > LAN > ip 地址时,exp://192.168.56.1:19000.

如何在不禁用网络的情况下更改它?因为这是我的 virtualbox ip,我的设备无法连接到它。

谢谢

您可以指定 REACT_NATIVE_PACKAGER_HOSTNAME 环境变量以使用正确的 IP 地址。

如果您使用的是 XDE,请确保在安装命令行工具后使用 xde . 从您的项目目录启动它。

设置了自定义ip后,还是无法连接虚拟盒子。

您需要在网络设置页面为虚拟机设置端口转发。

app Expo使用真实主机ip即可

 REACT_NATIVE_PACKAGER_HOSTNAME='real host mechine ip' npm start

我有类似的问题(可能略有不同),但解决方案对我不起作用。最后我尝试了 Expo CLI 工具,它对我来说非常有用,也是 Expo 团队推荐的。

My detailed question (may help someone to resolve similar problem):

如果您配置了 "ubuntu in windows",您可以自动执行该过程,并且 运行:

for /F "usebackq delims=" %A in (`ipconfig  ^| grep -A4 'Wireless LAN adapter WiFi' ^| tail -1 ^| awk '{print $NF}'`) do set REACT_NATIVE_PACKAGER_HOSTNAME=%A

检查你的电脑是否安装了virtualbox,禁用VirtualBox Host-Only Network

去赢电脑:控制Panel\Network和Internet\Network连接

运行 再次命令 expo 启动就可以了

在windows中你可以使用:

set REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.59

set 仅用于一个会话。如果你总是想在重启后使用相同的 ip,你可以使用:

setx /M REACT_NATIVE_PACKAGER_HOSTNAME 192.168.1.59

从您的项目目录打开 CMD,然后 运行 命令 set REACT_NATIVE_PACKAGER_HOSTNAME=192.168.0.12。将 ip 替换为您自己的 LAN ip 地址。 命令set用于在本地设置环境变量,而不是将其定义到环境变量中。

在 Linux 的 Windows 子系统上(Ubuntu 18.04.1 LTS "Bionic"),我必须使用 export 命令:

export REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.76.

我的问题通过在 ios 模拟器上重新安装 expo 客户端解决了。
我之前使用过 expo v37,但在 v38 上遇到了这个问题,问题是 expo 客户端没有 expo sdk 38。

分享我将 EXPO 与 Cloud 9 和 AWS Amplify 结合使用的经验。和你类似,二维码给出exp://localhost:19000

由于安全组已配置为提供 public 访问权限,因此我重新生成 QR 码以使其可以从 public IP 地址 exp://X.X.X.X:19000 访问,这可以从 IOS 台设备扫描到 EXPO。

REACT_NATIVE_PACKAGER_HOSTNAME 环境变量是为 React DevTools 准备的。 对于 EXPO,您必须设置 EXPO_DEVTOOLS_LISTEN_ADDRESS 环境变量。 这是确定主机名的奇怪函数:

function devtoolsGraphQLHost() {
    if (process.env.EXPO_DEVTOOLS_LISTEN_ADDRESS && process.env.REACT_NATIVE_PACKAGER_HOSTNAME) {
        return process.env.REACT_NATIVE_PACKAGER_HOSTNAME.trim();
    }
    else if (process.env.EXPO_DEVTOOLS_LISTEN_ADDRESS) {
        return process.env.EXPO_DEVTOOLS_LISTEN_ADDRESS;
    }
    return 'localhost';
}

如果您仍然遇到此问题,请尝试切换到隧道连接。它将安装@expo/ngrok@,然后您可以扫描二维码。这是我所做的,无需更改 IP 地址即可连接工作

点击'npm start',打开你的应用程序所在的浏览器运行,在左下角,你会找到二维码。

二维码上方显示三个选项'Connection: Tunnel | LAN | Local',默认为'LAN'。只需将其更改为 'Local'.

您的应用程序将会启动 运行。

对我来说,Windows 下的工作完全不同。 我的电脑有多个网络接口,LAN URL 指向一个与移动设备可以连接的不同的网络接口。

通过停用所有不必要的网络适配器很快解决了这个问题。

(设置 REACT_NATIVE_PACKAGER_HOSTNAME 环境变量对我不起作用。) 当然,在我配置它之前,我在专用网络上禁用了防火墙。

或者,为了避免必须停用网络适配器,您还可以像这样调整适配器的指标或优先级:

  1. 转到控制面板 > 网络和 Internet > 网络连接
  2. 右键单击所需的连接(高优先级连接)
  3. 单击“属性”>“Internet 协议版本 4”
  4. 单击“属性”>“高级”
  5. 取消选中“自动度量”
  6. 在“接口指标”中输入 10
  7. 点击确定