React Native Expo Go安卓端报错RNSScreenNavigationContainer未找到
问题说明
使用Expo Go运行React Native应用时,iOS端运行正常,但安卓端抛出以下异常:
Invariant Violation: requireNativeComponent: "RNSScreenNavigationContainer" was not found in the UIManager.
已尝试卸载重装react-native-screens、删除并重新安装node_modules及yarn.lock,问题仍未解决。
可行解决方案
核对依赖版本兼容性
确保react-native-screens版本与当前Expo SDK版本匹配(例如Expo SDK 49对应react-native-screens@~3.22.0,SDK 50对应~3.29.0),版本不匹配会导致原生组件链接失败。安装对应适配版本:yarn add react-native-screens@适配你SDK的版本号用Expo命令重新安装依赖
不要用普通的yarn/npm install,改用Expo专属命令处理原生依赖适配:expo install react-native-screens react-native-gesture-handler添加安卓端配置声明
在项目的app.json或app.config.js的expo字段下添加安卓额外包配置:"android": { "extraPackages": ["react-native-screens"] }彻底清除缓存
清除项目和Expo Go的缓存,避免缓存导致的依赖不生效:expo r -c同时在安卓设备的应用设置中,找到Expo Go并清除存储数据。
确认手势处理器配置
报错涉及PanGestureHandler,需确保react-native-gesture-handler正确初始化:在项目入口文件(如App.js)的最顶部添加:import 'react-native-gesture-handler';尝试预构建原生项目
若以上方法无效,可生成安卓原生项目文件确保依赖完全链接:expo prebuild --platform android完成后重新运行项目。
内容的提问来源于stack exchange,提问作者mth2171

