React Native报错Element type is invalid: got undefined如何排查解决?
问题排查与解决方法
报错的核心原因是TitleScreen渲染过程中用到了值为undefined的组件,按优先级依次检查修复:
- 优先级1:修复AdMobBanner导入错误
你当前TitleScreen.js中import { AdMobBanner } from 'expo';的写法已不兼容高版本Expo SDK:Expo从38版本开始将AdMob相关组件拆分到了独立的expo-ads-admob包中,直接从expo包导入会拿到undefined,渲染时就会触发该错误。
修复步骤:
- 终端执行安装命令:
expo install expo-ads-admob - 将TitleScreen中的AdMobBanner导入语句替换为:
import { AdMobBanner } from 'expo-ads-admob';
- 优先级2:修复App.js的PureComponent导入缺失
App.js中定义组件时继承了PureComponent,但代码开头没有导入该API,会导致组件初始化异常:
在App.js的最顶部添加导入:
import React, { PureComponent } from 'react';
优先级3:检查TitleScreen的样式定义
你贴出的TitleScreen代码中多处使用了styles.xxx的样式属性,但没有对应的StyleSheet.create样式定义,若实际代码中也缺失该部分,补充样式定义即可。快速定位验证方法
可以先临时注释掉TitleScreen中的AdMobBanner组件代码,重启项目后如果报错消失,即可直接确认是广告组件导入错误导致的问题。
内容的提问来源于stack exchange,提问作者Danno
相关产品推荐
相关产品推荐

