Firebase v9 Next.js 导出 getFirestore 导致错误“无法读取未定义的属性‘getProvider’”

Pol*_*lle 5 firebase next.js google-cloud-firestore

import { initializeApp, getApps, getApp } from "@firebase/firestore";
import { getFirestore } from "@firebase/firestore";

const firebaseConfig = {
  ...config
};

export default function firebaseApp() {
  if (!getApps().length) {
    firebaseApp = initializeApp(firebaseConfig);
  } else {
    firebaseApp = getApp(firebaseConfig);
  }
}

export const db = getFirestore(firebaseConfig)
Run Code Online (Sandbox Code Playgroud)

一切正常,直到我尝试将 getFirestore 导出为数据库。它在 CRA 中工作正常,但当我尝试在 Next.js 中执行此操作时,出现错误“无法读取未定义的属性‘getProvider’”。

我已经尝试了我能想到的一切:使用了yarn和npm,创建了多个项目,在另一个文件中导入了getFirestore。我不确定是什么原因造成的。

opt*_*sta 4

我不明白问题的确切原因。我相信这与 SSR 和客户端之间的 firestore 实例某种不匹配有关,或者可能需要等待才能启动它,但现在这对我有用:

export const db = () => getFirestore(firebaseApp)
Run Code Online (Sandbox Code Playgroud)

另外,您可能想将 传递给firebaseAppgetFirestore而不是firebaseConfig