我不能在下一个密码中使用firebase v9 enableIndexedDbPersistence。
这是错误
index. js//防火墙主目录
import { initializeApp } from 'firebase/app'
import { getAuth } from 'firebase/auth'
import { getFirestore } from 'firebase/firestore'
import { getStorage } from 'firebase/storage'
const firebaseConfig =
process.env.NEXT_PUBLIC_FIREBASE_CONFIG
const app = initializeApp(JSON.parse(firebaseConfig))
export const db = getFirestore(app)
// enableIndexedDbPersistence(db) // >>> if put here it said can't be invoked after getFirestore or any other funtion
export const auth = getAuth(app)
export const storage = getStorage(app)
那么,我应该在哪里调用
1条答案
按热度按时间bvjxkvbb1#
必须先调用
enableIndexedDbPersistence(db)
函数。在其文档中:必须在调用任何其他函数({@link initializeFirestore}、{@link(getFirestore:1)}或{@link clearIndexedDbPersistence}除外)之前调用。
所以
getFirestore(app)
实际上不受此限制,与您在代码片段的注解中所陈述的相反://〉〉〉如果放在这里,表示不能在getFirestore或任何其他函数之后调用
因此,我猜测您可能会在
enableIndexedDbPersistence(db)
的承诺完成之前使用导出的db
。您可以用不同的方法解决这个问题,例如将其 Package 在服务或方法中,并确保您是await
-ing承诺,或者通常更改您的应用,使其不立即使用db
。在我的Ionic PWA应用程序中,我成功地使用了以下内容:
这确实和你的剪切非常相似。但是第一次访问Firestore是在通过用户交互之后发生的,而不是马上。