使用Firebase onSnapshot时触发类型错误,求解决方法
解决Firebase onSnapshot触发"Expected type 'pa', but it was: a custom $n object"错误
这个错误的核心原因是:你使用了Firestore轻量版(firebase/firestore/lite),但onSnapshot是全量Firestore SDK才支持的实时监听能力,轻量版仅提供离线只读的基础数据操作,不支持实时更新监听,导致传入的数据库实例类型不匹配。
修复步骤:
替换Firestore的导入与初始化代码
将配置文件中Firestore的导入从firebase/firestore/lite改为firebase/firestore,修改后的配置文件如下:import { initializeApp } from 'firebase/app' import { getAuth } from 'firebase/auth' import { getFirestore } from 'firebase/firestore' // 移除/lite后缀 const firebaseConfig = { apiKey: 'API_KEY', authDomain: 'AUTH_DOMAIN', projectId: 'PROJECT_ID', storageBucket: 'STORAGE_BUCKET', messagingSenderId: 'MESSAGING_SENDER_ID', appId: 'APP_ID', } const firebaseApp = initializeApp(firebaseConfig) const db = getFirestore(firebaseApp) const auth = getAuth(firebaseApp) export { db, auth }确认调用代码的导入正确性
确保onSnapshot和collection是从全量Firestore SDK导入的,调用代码顶部需包含:import { onSnapshot, collection } from 'firebase/firestore'统一Firebase依赖版本(若之前改导入出现其他错误)
若替换导入后出现版本不兼容错误,执行以下命令重新安装Firebase,确保所有模块版本一致:npm install firebase # 或使用yarn yarn add firebase
内容的提问来源于stack exchange,提问作者Pickez
相关产品推荐
相关产品推荐

