开发时如何让Expo版React Native自动获取本地服务器IP连接REST API
在Expo React Native应用中自动获取本地服务器IP地址
方法1:利用Expo内置的Constants API
Expo官方提供的expo-constants库可以直接获取开发环境下Expo服务器的IP,这是最便捷的方案:
- 先安装依赖:
npx expo install expo-constants - 代码实现:
import Constants from 'expo-constants'; const getApiBaseUrl = () => { // 仅在开发环境自动获取IP if (__DEV__) { // 从Expo配置中提取服务器IP(hostUri格式为 [ip]:[port]) const localServerIp = Constants.expoConfig?.hostUri?.split(':')[0]; // 替换为你的API服务端口 return `http://${localServerIp}:3000`; } // 生产环境返回正式API地址 return 'https://your-production-api-domain.com'; }; - 说明:
Constants.expoConfig.hostUri是Expo自动注入的服务器地址,能动态适配你的本地IP变化,无需手动修改配置。
方法2:通过网络API获取设备局域网IP(备用)
如果第一种方案不满足需求,可以用expo-network获取设备当前的局域网IP,前提是API服务器和设备在同一局域网内:
- 安装依赖:
npx expo install expo-network - 代码实现:
import * as Network from 'expo-network'; const getApiBaseUrl = async () => { if (__DEV__) { const deviceIp = await Network.getIpAddressAsync(); return `http://${deviceIp}:3000`; } return 'https://your-production-api-domain.com'; };
实用提示
- 用
__DEV__全局变量自动区分开发/生产环境,避免手动切换地址的麻烦。 - 若使用Android模拟器,也可以直接用
10.0.2.2(模拟器映射到主机的localhost),但自动获取IP的方式更适合真机测试场景。
内容的提问来源于stack exchange,提问作者mikera
相关产品推荐
相关产品推荐

