Firebase初始化报错:Expected type 'Firestore$1',实际为自定义Firestore对象
解决Firebase Admin SDK连接模拟器报错:Expected type 'Firestore$1', but it was: a custom Firestore object
错误原因
你错误地将客户端Firebase SDK的connectFirestoreEmulator方法用于Firebase Admin SDK的Firestore实例,两者类型不兼容,导致类型匹配报错。
修正方案
移除客户端SDK的方法导入,改用Admin SDK原生的配置方式连接模拟器:
修正后的Firebase初始化代码
import admin from 'firebase-admin' const firebaseConfig = { apiKey: "XXXXX", authDomain: "linkedincv-bdbec.firebaseapp.com", projectId: "linkedincv-bdbec", storageBucket: "linkedincv-bdbec.appspot.com", messagingSenderId: "472466845815", appId: "XXXXX", measurementId: "XXXXX", }; // Initialize Firebase const app = admin.initializeApp(firebaseConfig); const db = admin.firestore(); // 配置连接到本地Firestore模拟器 db.settings({ host: 'localhost:4000', ssl: false // 模拟器默认使用HTTP,无需SSL }); export {db}
关键说明
- Admin SDK的Firestore实例不支持客户端SDK的
connectFirestoreEmulator方法,必须通过settings()指定模拟器地址和SSL设置。 - 确保Firebase模拟器已启动,执行命令:
firebase emulators:start --only firestore,端口需与代码中配置的4000一致。 - 你的执行代码无需修改,
db.collection("json_cv").doc("zied").set(payload)是Admin SDK的正确用法。
内容的提问来源于stack exchange,提问作者Zied Hamdi
相关产品推荐
相关产品推荐

