在使用 npx expo start
启动 Expo 开发服务器时,你可以通过设置网络模式来控制你的应用如何连接到开发服务器。Expo 提供了几种网络模式供你选择:
LAN (Default): 这是默认模式。在这种模式下,你的应用会通过本地局域网 (LAN) 连接到你的开发机器。这要求你的手机或模拟器与你的电脑处于同一个 Wi-Fi 网络下。这是通常开发时最常用和推荐的模式,因为它速度最快。
- 使用方式:
npx expo start
(无需额外参数) 或npx expo start --lan
- 使用方式:
Tunnel: 这种模式通过 ngrok 服务创建一个公共可访问的隧道,将你的本地开发服务器暴露到互联网上。这允许不在同一个局域网下的设备访问你的应用。当你需要在不同网络环境的真实设备上测试应用,或者需要远程分享你的开发进度时,这个模式非常有用。但是,隧道模式通常比 LAN 模式慢,并且依赖于第三方服务。
- 使用方式:
npx expo start --tunnel
- 使用方式:
Localhost: 这种模式只允许在你的开发机器上运行的模拟器或浏览器访问开发服务器,连接地址是
localhost
。这对于在模拟器上进行开发和调试非常方便,尤其是在网络环境复杂或没有 Wi-Fi 的情况下。- 使用方式:
npx expo start --localhost
- 使用方式:
你也可以使用 --host
参数来指定网络模式,例如:
npx expo start --host lan
npx expo start --host tunnel
npx expo start --host localhost
总结如何设置:
在终端中,进入你的 Expo 项目目录,然后运行 npx expo start
命令,并根据你的需求添加相应的参数:
- 使用 LAN (默认):
npx expo start
- 使用 Tunnel:
npx expo start --tunnel
- 使用 Localhost:
npx expo start --localhost
选择哪种模式取决于你的开发场景和需求。对于日常开发和测试,LAN 模式通常是最佳选择。当你需要远程测试或分享时,可以使用 Tunnel 模式。而 Localhost 模式则适用于只在本地模拟器或浏览器中运行和调试的情况。
如果你有多个网络接口(比如有线连接和无线连接,或者虚拟机创建的虚拟网络),Expo CLI 在启动时可能会选择一个错误的 IP 地址作为 LAN 连接的服务器地址,导致设备无法连接。
虽然 npx expo start
命令本身没有直接指定绑定 IP 地址的参数,但你可以通过设置一个环境变量来强制 Expo 客户端(如 Expo Go 或 Development Client)连接到你指定的 IP 地址。
这个环境变量是 EXPO_PACKAGER_PROXY_URL
。
使用 EXPO_PACKAGER_PROXY_URL 指定 IP:
找到你想要使用的网络接口的 IP 地址。 你可以在操作系统的网络设置中查找,或者使用命令行工具(如
ipconfig
在 Windows 上,ifconfig
或ip addr
在 macOS/Linux 上)来查看。找到你在局域网中使用的那个网络的 IPv4 地址(通常是 192.168.x.x 或 10.0.x.x)。在启动 Expo 开发服务器之前,设置
EXPO_PACKAGER_PROXY_URL
环境变量。 你需要将它设置为http://你的_IP_地址:开发服务器端口
。Expo 的默认开发服务器端口通常是 19000 或 8081 (Metro)。在 macOS 或 Linux (使用 Bash/Zsh 等 Shell) 中:
Bashexport EXPO_PACKAGER_PROXY_URL=http://你的_IP_地址:19000 npx expo start
或者如果 Metro 端口是 8081:
Bashexport EXPO_PACKAGER_PROXY_URL=http://你的_IP_地址:8081 npx expo start
请将
你的_IP_地址
替换为你实际的局域网 IP 地址。在 Windows 命令提示符 (CMD) 中:
DOSset EXPO_PACKAGER_PROXY_URL=http://你的_IP_地址:19000 npx expo start
请将
你的_IP_地址
替换为你实际的局域网 IP 地址。在 Windows PowerShell 中:
PowerShell$env:EXPO_PACKAGER_PROXY_URL="http://你的_IP_地址:19000" npx expo start
请将
你的_IP_地址
替换为你实际的局域网 IP 地址。
解释:
设置 EXPO_PACKAGER_PROXY_URL
环境变量并不会改变 Expo 开发服务器实际绑定到哪个 IP 地址(它可能仍然绑定到所有可用接口的 0.0.0.0),但它会告诉 Expo CLI 在生成二维码和链接时使用你指定的 URL。Expo Go 和 Development Client 在连接时会优先使用这个指定的 URL,从而确保它们连接到你期望的网络接口。
注意事项:
- 通过
export
或set
设置的环境变量通常只在当前的终端会话中有效。如果你关闭终端窗口再重新打开,需要重新设置。 - 确保你的设备(手机或模拟器)可以通过你指定的 IP 地址访问你的电脑。这意味着它们需要处于同一个局域网,并且你的电脑防火墙允许来自该网络的连接到 Expo 使用的端口(默认为 19000 或 8081)。
- 如果你的 IP 地址经常变化(例如 DHCP 分配),每次开发前可能都需要重新查找并设置这个变量。
这种方法比尝试修改操作系统层面的网络接口优先级更直接,是解决 Expo CLI 在多网卡环境下选择错误 IP 问题的常用手段。
remark:Nativewind css网站自己用 Installation