Expo开发React Native应用报NetInfo已移除错误,有哪些解决方法?
可行排查与解决方向
- 优先清理所有层级缓存:仅删除node_modules不足以解决缓存导致的异常,Expo项目存在多维度缓存,按顺序执行以下操作:
- 删除项目根目录下的
.expo缓存文件夹 - 执行
npm cache clean --force清理npm全局缓存 - 启动项目时使用
expo start --clear命令强制跳过Expo打包缓存 - 卸载模拟器/测试设备上已安装的该应用,清除设备端本地缓存后重新安装运行
- 删除项目根目录下的
- 调整全局搜索规则排查依赖内部引用:之前的搜索大概率漏了非ESModule导入的写法,重新搜索整个node_modules目录时,要覆盖以下全部命中规则:
- 解构导入写法:
import { NetInfo } from 'react-native' - CommonJS导入写法:
require('react-native').NetInfo
从提供的package.json来看,@redux-offline/redux-offline@2.6.0-expo.0这个版本存在隐式依赖旧版NetInfo的已知问题,可重点排查该包的源码,确认是否有上述导入语句
- 解构导入写法:
- 校验工具链版本兼容性:
- 检查全局安装的expo-cli版本,Expo SDK 42仅适配5.x版本的expo-cli,若全局安装了更高版本的expo-cli,要么降级全局版本,要么每次启动时使用
npx expo start调用项目本地依赖中的expo-cli运行 - 检查项目根目录下的babel.config.js配置,确认没有添加会修改导入路径的自定义插件
- 检查全局安装的expo-cli版本,Expo SDK 42仅适配5.x版本的expo-cli,若全局安装了更高版本的expo-cli,要么降级全局版本,要么每次启动时使用
- 临时兼容方案:若暂时找不到触发问题的具体位置,可以直接安装
@react-native-community/netinfo包,在babel配置中添加模块别名规则,将所有从react-native导入NetInfo的请求自动重定向到社区版本,无需修改依赖源码即可解决报错。
内容的提问来源于stack exchange,提问作者C.T. Bell
相关产品推荐
相关产品推荐

