You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native调用firebase.database()报is not function错误解决方案问询

问题解答

根因说明

你当前使用的是 Firebase v9+ 版本的兼容(compat)套件,该版本的设计逻辑是:所有服务类依赖(比如实时数据库、认证、云存储等)在被导入时,会自动向firebase/compat/app导出的全局 Firebase 实例注册对应服务的调用方法,不需要你显式使用导入的服务变量。
你未导入firebase/compat/database时,全局 Firebase 实例上没有挂载database()方法,因此触发报错;导入该依赖后,实时数据库服务完成注册,firebase.database()方法即可正常调用,和你是否用到导入的database变量没有关联。

正确导入操作

方案1:继续使用compat兼容模式(适配旧版本写法)

仅需要两步操作即可正常使用firebase.database():

  1. 导入Firebase核心compat包
import firebase from 'firebase/compat/app'
  1. 导入实时数据库compat包,无需声明接收变量也可生效:
// 两种写法均可,不需要用到导入的database变量时,第一种写法即可
import 'firebase/compat/database'
// 你之前的写法也完全兼容
// import database from 'firebase/compat/database'

*注意:必须在调用firebase.database()前,先调用firebase.initializeApp(你的Firebase项目配置)完成初始化,建议将初始化逻辑放在项目入口文件或单独的Firebase配置文件中即可。

方案2:使用新版模块化API(更推荐,可有效减少包体积)

如果没有兼容旧代码的需求,更建议使用Firebase v9+推出的模块化API,导入和使用方式如下:

// 导入核心依赖
import { initializeApp } from 'firebase/app'
// 导入实时数据库相关方法
import { getDatabase, ref, once } from 'firebase/database'

// 初始化
const firebaseApp = initializeApp(你的Firebase配置)
// 获取数据库实例
const db = getDatabase(firebaseApp)

// 调用示例
const userRef = ref(db, 'Users')
once(userRef, 'value', (snap) => {
  let profiles = []
  snap.forEach((profile) => {
    const {name, bio, birthday, id} = profile.val()
    profiles.push({name, bio, birthday, id})
  })
  // 后续状态操作
})

内容的提问来源于stack exchange,提问作者user17440201

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:24:02