避免 Firebase 重复导致无法读取属性“应用程序”
2021-05-17
522
我正在尝试在 TypeScript/NextJS 项目中使用 Firebase,但未能使其正常工作。我可以导入它并初始化应用程序:
import * as firebase from "firebase/app";
import { collection, getDocs } from "firebase/firestore";
const firebaseConfig= ({
apiKey: "",
authDomain: "",
projectId: "",
storageBucket: "",
messagingSenderId: "",
appId: "",
measurementId: ""
});
firebase.initializeApp(firebaseConfig);
但是,当我重新加载页面时,出现此错误:
FirebaseError:Firebase:名为“[DEFAULT]”的 Firebase 应用程序已经存在(app / duplicated-app)。
为了缓解这个问题,我替换了
firebase.initializeApp(firebaseConfig);
与
if (!firebase.apps.length) {
firebase.initializeApp(firebaseConfig);
} else {
firebase.app();
}
但现在我收到错误
TypeError:无法读取未定义的属性“长度”
。
apps
上的 Intellisense 说
属性“apps”在类型上不存在
,但我不知道如何处理此信息。任何帮助表示感谢。
2个回答
在版本 9
中,您应该能够改用
getApps
进行测试:
import { getApps, initializeApp } from "firebase/app"
if (!getApps().length) initializeApp(firebaseConfig)
https://firebase.google.com/docs/reference/js/v9/app.md#getapps
jnpdx
2021-05-17
您使用的语法适用于 Firebase SDK 8.x 及更早版本,因此我建议使用这些版本。版本 9 引入了一种完全不同的模块化语法 - 如 @jnpdx 的 答案 中所示。
Frank van Puffelen
2021-05-17