Expo React Native SDK46.0加载报错:无法解析SafeAreaProviderCompat
解决"Unable to resolve './SafeAreaProviderCompat'"错误的步骤
这个错误大多是@react-navigation包版本不兼容或依赖缺失导致的,结合Expo SDK 46.0的环境,按以下步骤排查:
1. 统一@react-navigation相关包版本
Expo SDK 46.0适配的React Navigation稳定版本是6.x系列,必须保证所有@react-navigation子包(bottom-tabs、native、stack等)版本一致,否则容易出现依赖冲突。
- 先查看当前各包版本:
npm list @react-navigation/bottom-tabs @react-navigation/native @react-navigation/stack
- 安装SDK46适配的指定版本:
npm install @react-navigation/bottom-tabs@6.3.2 @react-navigation/native@6.0.11 @react-navigation/stack@6.2.3 # 用yarn的话执行: yarn add @react-navigation/bottom-tabs@6.3.2 @react-navigation/native@6.0.11 @react-navigation/stack@6.2.3
2. 清除缓存重启项目
缓存异常可能导致Metro无法正确解析文件,执行以下操作:
- 关闭当前运行的Metro服务器
- 清除Expo缓存并重启:
expo r -c
3. 检查并安装react-native-safe-area-context
SafeAreaProviderCompat依赖react-native-safe-area-context,SDK46对应的兼容版本是4.3.1,确认已安装:
npm install react-native-safe-area-context@4.3.1 # yarn用户: yarn add react-native-safe-area-context@4.3.1
4. 重装node_modules
如果以上方法都无效,彻底清理依赖后重新安装:
rm -rf node_modules package-lock.json yarn.lock npm install # 或者yarn install
内容的提问来源于stack exchange,提问作者David Guri
相关产品推荐
相关产品推荐

