无需依赖expo-network包,在Expo中获取公网IP的可行方案
Expo环境下不依赖expo-network获取公网IP的替代方案
我目前使用expo-network包获取公网IP,希望清理package.json中的冗余依赖,寻求不依赖该包的替代方案。此前已尝试过两种方式:
- expo-network(当前想替换掉的方案)
- react-native-network-info(在Expo环境中无法正常工作)
以下是可行的替代方案:
1. 调用第三方IP查询API
直接利用Expo自带的fetch能力请求公开的IP查询接口,无需安装任何额外依赖包,代码示例:
async function getPublicIP() { try { const res = await fetch('https://api.ipify.org?format=json'); const data = await res.json(); return data.ip; } catch (err) { console.error('获取公网IP出错:', err); return null; } }
类似的可用接口还有https://icanhazip.com(返回纯文本格式的IP地址),选择稳定的接口即可。
2. 进阶:DNS解析公网域名(可选)
若不想依赖第三方API,可通过解析知名公网域名获取IP,但需要处理DNS解析逻辑。如果使用Expo的话,可借助expo-dns包实现,但如果追求彻底零额外依赖,优先选择第一种方案更简便。
总结:第三方IP查询API方案最实用,无需添加任何依赖,代码实现简单且稳定性高,完全能满足清理package.json冗余包的需求。
内容的提问来源于stack exchange,提问作者Ruo Mei Xi
相关产品推荐
相关产品推荐

