React Native初始化两个Firebase实例报错:默认应用已存在
Firebase初始化多实例报错原因解析
报错原因
调用initializeApp()初始化Firebase实例时,如果不传入第二个参数指定应用名称,Firebase会默认将该实例命名为[DEFAULT]。
你的代码里先通过initializeApp(firebaseConfig1)创建了名为[DEFAULT]的实例;紧接着又调用initializeApp(firebaseConfig2),同样没指定自定义名称,Firebase尝试再次创建[DEFAULT]实例,但两次配置参数完全不同,因此触发了FirebaseError: Firebase: Firebase App named '[DEFAULT]' already exists with different options or config (app/duplicate-app)错误。
修复方案
要同时初始化多个Firebase实例,必须为第二个及以后的实例指定唯一的自定义名称,修改代码如下:
import { initializeApp, getApps, getApp,} from "firebase/app"; import { getFirestore, collection, getDocs, addDoc, doc, deleteDoc, onSnapshot, } from 'firebase/firestore' var firebaseConfig1 = { apiKey: "asdas", authDomain: "asdasdasd", projectId: "sadsad", storageBucket: "asdsadsa", messagingSenderId: "sadasd", appId: "1:66067574271:asdasda" }; var firebaseConfig2 = { apiKey: "AIzaSysaQumXvVddASFASAS9dIk", authDomain: "ASFASFASFASFASFASFASFAseapp.com", projectId: "ASFASAAFAF", storageBucket: "ASFAFAS", messagingSenderId: "31ASASAFASFFSAFAS6A3", appId: "ASF3FASFASASFSASFA0AASFAASFFS" }; // 第一个实例使用默认名称[DEFAULT] export var app = initializeApp(firebaseConfig1) // 第二个实例指定自定义名称"creator-app"(名称可自定义,只要唯一即可) var run = initializeApp(firebaseConfig2, "creator-app")
后续使用第二个实例的服务时,需要明确指定对应的应用实例:
// 获取第二个实例的Firestore服务 const creatorFirestore = getFirestore(run); // 或者通过应用名称获取实例后再调用服务 const creatorApp = getApp("creator-app"); const creatorFirestore = getFirestore(creatorApp);
内容的提问来源于stack exchange,提问作者Leo Geli
相关产品推荐
相关产品推荐

