لقد بدأت مشروعًا بناءً على https://github.com/zeit/next.js/tree/v3-beta/examples/with-firebase
الخطأ الذي أواجهه عند استيراد Firebase في أكثر من مكون.
في ملف بدء Firebase هذا:
"استيراد Firebase من" Firebase "
const firebaseConfig = {
apiKey: "fdsfsdfdsf" ،
المؤلف: "fdsfdsfsdfdsf" ،
قاعدة البيانات URL: "sdfdsfdsf" ،
معرّف المشروع: "dsfdsfdsf" ،
التخزين: "dsfdsfdsf"،
messagingSenderId: "dsfdsfsdfdsf"
}
const FbApp = firebase.initializeApp (firebaseConfig)
تصدير الافتراضي FbApp.auth () `
ثم في المكونات:
import firebase from '../lib/firebaseClient'
باستخدام مكون واحد يعمل بشكل جيد ، ولكن إذا أضفت مكونًا جديدًا بـ import firebase from '../lib/firebaseClient'
فإن التطبيق يفشل:
Firebase: تطبيق Firebase المسمى "[DEFAULT]" موجود بالفعل (app / Dupate-app).
FirebaseError: Firebase: تطبيق Firebase المسمى "[DEFAULT]" موجود بالفعل (تطبيق / تطبيق مكرر).
يمكنك التحقق من firebase.apps
لمعرفة ما إذا كان قد تم تحميله. إذا قمت بتحميله مرة واحدة فقط ، فيمكنك فقط التحقق من الطول. إذا كان لديك عدة ، فيمكنك التحقق من اسم كل تطبيق.
if (!firebase.apps.length) {
firebase.initializeApp({});
}
الحل:
"استيراد Firebase من" Firebase "
محاولة {
firebase.initializeApp ({
قاعدة البيانات URL: "dfgdfg"
})
} catch (يخطئ) {
// نتخطى رسالة "موجود بالفعل" وهي
// ليس خطأً فعليًا عندما نقوم بإعادة التحميل بسرعة
إذا (! / موجود بالفعل / .test (err.message)) {
console.error ("خطأ في تهيئة Firebase" ، err.stack)
}
}
const fb = firebase
تصدير الافتراضي fb`
ترجع المشكلة إلى استدعاء طريقة التهيئة لقاعدة Firebase أكثر من عدة مرات. كان لي نفس المشكلة. ويمكنني إصلاحه عن طريق تقييد استدعاء طريقة التهيئة أكثر من مرة. قم بإجراء تكوينات Firebase في فئة واحدة وجعلها فئة فردية.
أنا جديد على Firebase ومطور ويب حديث. كان لدي هذه المشكلة. نتجت مشكلتي عن ربط ملف جافا سكريبت الخاص بي في كل من رأس ونص ملف html الخاص بي. كان لدي على وجه التحديد علامات نصية Firebase و js في رأس html وعلامة نصية js أخرى في نهاية علامة النص الأساسي. كان إصلاحي هو حذف جميع علامات البرنامج النصي من الرأس ووضعها في الجزء السفلي من الجسم.
هذا هو الحل:
// Config file
import * as firebase from "firebase";
const config = {...};
export default !firebase.apps.length ? firebase.initializeApp(config) : firebase.app();
// Other file
import firebase from '../firebase';
...
console.log(firebase.name);
console.log(firebase.database());
حل رائع! تضمين التغريدة
Purii لقد أنقذت يومي للتو
إذا كنت تستخدم firestore ، فاستخدم:
export default !firebase.apps.length
? firebase.initializeApp(config).firestore()
: firebase.app().firestore();
@ jide شكرا
اضطررت أيضًا إلى تضمين import 'firebase/firestore';
import * as firebase from 'firebase'
import 'firebase/firestore';
const config = {
apiKey: "***",
authDomain: "***",
databaseURL: "***",
projectId: "***",
storageBucket: "***",
messagingSenderId: "***"
};
export default !firebase.apps.length
? firebase.initializeApp(config).firestore()
: firebase.app().firestore();
Purii و @ jide ، شكرًا على الحلول
التعليق الأكثر فائدة
يمكنك التحقق من
firebase.apps
لمعرفة ما إذا كان قد تم تحميله. إذا قمت بتحميله مرة واحدة فقط ، فيمكنك فقط التحقق من الطول. إذا كان لديك عدة ، فيمكنك التحقق من اسم كل تطبيق.http://stackoverflow.com/questions/37652328/how-to-check-if-a-firebase-app-is-already-initialized-on-android