Firebase实时数据库无法写入数据,报错database is not a function求助
错误原因
你使用的是 Firebase v9+ 模块化版本,该版本已经废弃了旧版命名空间式的firebase.database()调用语法,所以才会抛出database is not a function的报错。
修复步骤
- 先确认你的
firebase.js配置文件已经正确初始化Firebase实例并导出,参考配置如下:
// firebase.js 配置示例 import { initializeApp } from "firebase/app"; const firebaseConfig = { // 替换为你自己的Firebase项目配置 apiKey: "xxx", authDomain: "xxx", databaseURL: "xxx", // 必须填写Realtime Database的访问地址,否则也会触发报错 projectId: "xxx", storageBucket: "xxx", messagingSenderId: "xxx", appId: "xxx" }; const app = initializeApp(firebaseConfig); export default app;
- 业务代码中导入Realtime Database对应的模块化API,替换旧的数据库操作逻辑,修改后的完整代码如下:
import app from "../../config/firebase" import { getAuth, signInWithPopup, FacebookAuthProvider } from "firebase/auth"; // 新增导入数据库相关方法 import { getDatabase, ref, set } from "firebase/database"; const facebook_login=()=>{ return (dispatch)=>{ const provider = new FacebookAuthProvider(); const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { console.log("Facebook Login") var user = result.user; var credential = FacebookAuthProvider.credentialFromResult(result); var accessToken = credential.accessToken; let create_user={ name:user.displayName, email:user.email, profile:user.photoURL, uid:user.uid } // 替换旧的数据库调用逻辑 const db = getDatabase(app); set(ref(db, `users/${user.uid}`), create_user) .then(()=>{ alert("Login Successfull") }) }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; const email = error.email; const credential = FacebookAuthProvider.credentialFromError(error); console.log(errorMessage) }); } } export{ facebook_login }
内容的提问来源于stack exchange,提问作者Muhammad Osama
相关产品推荐
相关产品推荐

