USB调试时,如何通过Expo获取笔记本电脑的LAN IP地址?
解决Expo USB调试时获取电脑LAN IP的问题
问题说明
你之前尝试的react-native-network-info和expo-network都是获取移动设备自身的网络IP,而非运行Expo服务器的笔记本LAN IP,所以无法得到目标地址。而使用--localhost启动时,Constants.linkingUri返回的是本地回环地址127.0.0.1,仅能在设备内部访问,无法连接到电脑上的服务器。
可行解决方案
方案1:切换到LAN模式启动(推荐)
直接改用--host lan参数启动Expo,它会自动绑定你的笔记本LAN IP,并自动处理USB调试的端口转发:
npx expo start --host lan --android
此时Constants.linkingUri会返回类似exp://192.168.x.x:8081的地址,你原来的代码就能正确提取出LAN IP:
const localhostIP = Constants.linkingUri.split(':')[1].replace('//', '');
方案2:手动指定LAN IP启动
如果需要保留--localhost参数,可以手动指定你的笔记本LAN IP启动:
npx expo start --localhost --lan --host 192.168.x.x --android
(将192.168.x.x替换为你实际的LAN IP,可通过电脑网络设置或命令行工具获取)
方案3:通过环境变量传递LAN IP
- 先获取笔记本的LAN IP:
- Mac/Linux终端执行:
ifconfig | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' - Windows PowerShell执行:
(Get-NetIPAddress -AddressFamily IPv4 | Where-Object {$_.InterfaceAlias -notmatch "Loopback"} | Select-Object -First 1).IPAddress
- Mac/Linux终端执行:
- 安装
expo-dotenv:npx expo install expo-dotenv - 在项目根目录创建
.env文件,写入:LAN_IP=你的LAN_IP地址 - 在
app.json中添加配置:"expo": { "extra": { "lanIp": process.env.LAN_IP } } - 在代码中直接获取:
import Constants from 'expo-constants'; const localhostIP = Constants.expoConfig.extra.lanIp;
内容的提问来源于stack exchange,提问作者Z0q
相关产品推荐
相关产品推荐

