Expo39升级到42搭配React Navigation4出现createElement报错如何解决
问题根因
两个核心原因触发报错:
- AppLoading导入失效:从Expo SDK 40版本开始,
AppLoading组件就从expo核心包中拆分到了独立的expo-app-loading包中,你当前使用的Expo 42版本已经完全移除了核心包中的AppLoading导出,所以代码里import { AppLoading } from 'expo'得到的是undefined,渲染该组件时就触发了你看到的类型无效报错,刚好对应报错提示的Check your code at App.js:89。 - 导航依赖版本不兼容:你当前依赖的
react-navigation-stack@1.5.4版本过老,和Expo 42配套的React Native版本存在兼容问题,也可能额外触发同类组件undefined报错。
解决步骤
- 第一步:安装适配Expo 42的独立AppLoading包
执行以下命令自动安装对应适配版本,避免手动指定版本出现不匹配问题:expo install expo-app-loading - 第二步:修改App.js中的导入语句
把原来的导入代码:
替换为:import { AppLoading } from 'expo';
注意该包为默认导出,不需要加花括号包裹。import AppLoading from 'expo-app-loading'; - 第三步:升级React Navigation 4相关依赖到兼容版本
执行命令升级到适配Expo 42的v4生态最新版:npm install react-navigation@^4.4.4 react-navigation-stack@^2.10.4 - 第四步:清除缓存重启项目
执行命令清理Expo本地缓存,避免旧缓存残留导致报错:expo start -c
内容的提问来源于stack exchange,提问作者200gSoft
相关产品推荐
相关产品推荐

