【问题标题】:How to initalize 2 firebase on single application?如何在单个应用程序上初始化 2 个 firebase?
【发布时间】:2021-04-06 16:38:32
【问题描述】:

我正在构建一个带有管理仪表板的电子商务网站。

网站使用自己的托管、firestore 和身份验证。

现在我正在尝试让我的管理仪表板使用它自己的托管和身份验证,但使用网站 Firestore,我不断收到此错误:

index.esm.js:769 Uncaught FirebaseError: Firebase: Firebase App named '[DEFAULT]' 已经存在(app/duplicate-app)。

import firebaseAuthOnly from 'firebase/app' 
import firebase from 'firebase/app' 
import "firebase/firestore";
import "firebase/storage";
import "firebase/auth";
import "firebase/functions";
import "firebase/analytics";
import "firebase/performance";

const firebaseAuthOnlyConfig = {
    apiKey           : process.env.REACT_APP_FIREBASE_AUTH_API,
    authDomain       : process.env.REACT_APP_FIREBASE_AUTH_AUTH_DOMAIN,
    projectId        : process.env.REACT_APP_FIREBASE_AUTH_PROJECT_ID,
    storageBucket    : process.env.REACT_APP_FIREBASE_AUTH_STORAGE_BUCKET,
    messagingSenderId: process.env.REACT_APP_FIREBASE_AUTH_MESSAGING_SENDER_ID,
    appId            : process.env.REACT_APP_FIREBASE_AUTH_APP_ID,
    measurementId    : process.env.REACT_APP_FIREBASE_AUTH_MEASUREMENT_ID
}

const firebaseConfig = {
    apiKey           : process.env.REACT_APP_FIREBASE_API,
    authDomain       : process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
    databaseURL      : process.env.REACT_APP_FIREBASE_DATABASE_URL,
    projectId        : process.env.REACT_APP_FIREBASE_PROJECT_ID,
    storageBucket    : process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
    messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,
    appId            : process.env.REACT_APP_FIREBASE_APP_ID,
    measurementId    : process.env.REACT_APP_FIREBASE_MEASUREMENT_ID
}

// Initialize Firebase
firebaseAuthOnly.initializeApp(firebaseAuthOnlyConfig);
firebaseAuthOnly.analytics();
firebaseAuthOnly.performance();

firebase.initializeApp(firebaseConfig);

【问题讨论】:

    标签: firebase


    【解决方案1】:

    您需要命名不同的实例(Firebase 称它们为应用程序);默认情况下,您使用的是 [DEFAULT] 应用程序,因为这是最常见的用例,但是当您需要使用多个应用程序时,您必须在初始化时添加一个名称:

    // Intialize the "[DEFAULT]" App
    var mainApp = firebase.intializeApp({ ... });
    
    // Intialize a "Secondary" App
    var secondaryApp = firebase.initializeApp({ ... }, "Secondary");
    ...
    mainApp.database().ref("path/to/data").set(value);
    secondaryApp.database().ref("path/to/data").set(anotherValue);
    

    您可以在将 Firebase 添加到 JavaScript 项目指南的更新后的 Initialize multiple apps 部分中找到更多示例场景。

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 2019-03-26
      • 2016-10-05
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      • 2018-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多