React Native集成Firebase Analytics报window.document未定义错误
报错原因
当前引入的firebase/analytics是Firebase官方提供的Web端专用JS SDK,内部逻辑强依赖浏览器环境独有的window、document等DOM API。React Native运行在iOS/Android原生runtime中,本身没有实现浏览器端的DOM对象,代码执行到SDK内部读取window.document.getElementsByTagName的逻辑时,因为window.document值为undefined,就会抛出该类型错误。
解决方法
- 移除当前项目中安装的Web版Firebase JS SDK相关依赖,不要在React Native环境中使用为Web浏览器设计的Firebase包,这类包即使强行做polyfill兼容,上报的 analytics 数据也会存在口径偏差,无法正常工作。
- 替换使用React Native平台专用的官方Firebase SDK,接入流程如下:
- 先完成核心App模块的安装,同时在原生工程中放入对应平台的Firebase配置文件:iOS端放入
GoogleService-Info.plist,Android端放入google-services.json,并完成原生层的SDK初始化配置。 - 单独安装SDK提供的Analytics模块,安装完成后可直接在业务代码中引入Analytics实例调用埋点方法,不需要照搬Web端手动执行
initializeApp、getAnalytics的初始化逻辑,模块会自动读取原生配置完成初始化。
- 先完成核心App模块的安装,同时在原生工程中放入对应平台的Firebase配置文件:iOS端放入
- 如果使用Expo托管React Native项目,直接使用Expo官方提供的Firebase适配配置流程即可,不需要手动修改原生工程配置。
内容的提问来源于stack exchange,提问作者zekoliman
相关产品推荐
相关产品推荐

