使用Firebase时持续出现firebase.firestore is not a function错误求助
解决“firebase.firestore is not a function”错误
你的问题出在混用了Firebase v9+的模块化SDK和旧版命名空间调用方式,v9+默认采用模块化API,不再支持通过初始化后的app实例直接调用firestore()方法。以下是修正方案:
步骤1:更新Firebase连接文件
替换旧的Firestore导入方式,改用模块化API初始化Firestore实例:
import { seedDatabase } from "../seed"; import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore"; // 替换原import 'firebase/firestore' // 你的Firebase配置 const firebaseConfig = { apiKey: "x", authDomain: "x", projectId: "x", storageBucket: "x", messagingSenderId: "x", appId: "x" }; // 初始化App和Firestore实例 const app = initializeApp(firebaseConfig); const db = getFirestore(app); // 将Firestore实例传入seed函数 seedDatabase(db);
步骤2:更新数据填充文件
修改seedDatabase函数,直接使用传入的Firestore实例操作集合:
export function seedDatabase(db) { // 参数改为Firestore实例 function getUUID() { /* eslint-disable */ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => { const piece = (Math.random() * 16) | 0; const elem = c === 'x' ? piece : (piece & 0x3) | 0x8; return elem.toString(16); }); /* eslint-enable */ } // 使用传入的db实例操作集合 db.collection('series').add({ id: getUUID(), title: 'Tiger King', description: 'An exploration of big cat breeding and its bizarre underworld, populated by eccentric characters.', genre: 'documentaries', maturity: '18', slug: 'tiger-king', }); }
兼容旧版写法(可选)
如果需要临时兼容旧代码风格,可以使用Firebase的compat版本(不推荐长期使用),只需调整导入方式:
// 连接文件中替换导入 import firebase from 'firebase/compat/app'; import 'firebase/compat/firestore'; import 'firebase/compat/auth'; // 初始化方式不变,传入firebase对象给seed函数 const app = firebase.initializeApp(firebaseConfig); seedDatabase(firebase);
内容的提问来源于stack exchange,提问作者alistp
相关产品推荐
相关产品推荐

