Comencé un proyecto basado en https://github.com/zeit/next.js/tree/v3-beta/examples/with-firebase
El error que tengo al importar firebase en más de un componente.
En este archivo de inicio de base de fuego:
`importar firebase desde 'firebase'
const firebaseConfig = {
apiKey: "fdsfsdfdsf",
authDomain: "fdsfdsfsdfdsf",
databaseURL: "sdfdsfdsf",
projectId: "dsfdsfdsf",
storageBucket: "dsfdsfdsf",
messagingSenderId: "dsfdsfsdfdsf"
}
const FbApp = firebase.initializeApp (firebaseConfig)
exportar FbApp.auth () predeterminado
Luego en los componentes:
import firebase from '../lib/firebaseClient'
Con un solo componente funciona bien, pero si agrego un nuevo componente con import firebase from '../lib/firebaseClient'
la aplicación falla:
Firebase: la aplicación de Firebase llamada '[DEFAULT]' ya existe (app / duplicate-app).
FirebaseError: Firebase: La aplicación de Firebase llamada '[DEFAULT]' ya existe (app / duplicate-app).
Puede comprobar firebase.apps
para ver si está cargado. Si solo lo carga una vez, puede verificar la longitud. Si tiene varios, puede verificar el nombre de cada aplicación.
if (!firebase.apps.length) {
firebase.initializeApp({});
}
La solución:
`importar firebase desde 'firebase'
tratar {
firebase.initializeApp ({
databaseURL: 'dfgdfg'
})
} atrapar (err) {
// omitimos el mensaje "ya existe" que es
// no es un error real cuando estamos recargando en caliente
if (! / ya existe / .test (err.message)) {
console.error ('Error de inicialización de Firebase', err.stack)
}
}
const fb = base de fuego
exportar fb predeterminado
el problema se debe a que se llama al método initialize de firebase más de varias veces. yo tuve este mismo problema. y podría solucionarlo restringiendo la llamada al método de inicialización más de una vez. Realice las configuraciones de la base de fuego en una clase y conviértalo en clase singleton.
Soy nuevo en firebase y soy un desarrollador web reciente. Tuve este problema. Mi problema fue causado por vincular mi archivo javascript tanto en el encabezado como en el cuerpo de mi archivo html. Específicamente, tenía etiquetas de script firebase y js en el encabezado html y otra etiqueta de script js al final de la etiqueta del cuerpo. Mi solución fue eliminar todas las etiquetas de script del encabezado y colocarlas en la parte inferior del cuerpo.
Esa es mi solución:
// 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());
¡Solución brillante! @Purii
@Purii Me acabas de salvar el día
Si usa firestore, use:
export default !firebase.apps.length
? firebase.initializeApp(config).firestore()
: firebase.app().firestore();
@jide gracias
También tuve que incluir 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 y @jide , gracias por las soluciones
Comentario más útil
Puede comprobar
firebase.apps
para ver si está cargado. Si solo lo carga una vez, puede verificar la longitud. Si tiene varios, puede verificar el nombre de cada aplicación.http://stackoverflow.com/questions/37652328/how-to-check-if-a-firebase-app-is-already-initialized-on-android