Actualicé a la última versión de @angular/fire recientemente, y todo funcionó bien, pero ahora he migrado fuera de las bibliotecas de compatibilidad, y ahora estoy atascado con este problema. Recibo este error en el siguiente código: Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() .
// ... import {getAuth, provideAuth} from '@angular/fire/auth'; import {getFirestore, provideFirestore} from '@angular/fire/firestore'; import {initializeApp, provideFirebaseApp} from '@angular/fire/app'; // ... @NgModule({ // ... providers: [ // ... provideFirebaseApp(() => initializeApp(window['firebase_config'])), provideFirestore(() => getFirestore()), provideAuth(() => getAuth()), // ... ], // ... }) export class ApModule { // ... }Aquí está el seguimiento de la pila:
Error: Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app/no-app). at new ZoneAwareError (http://localhost:4200/vendor.js:65953:33) at new FirebaseError (http://localhost:4200/apps_frontend_src_app_app_module_ts.js:166709:5) at ErrorFactory.create (http://localhost:4200/apps_frontend_src_app_app_module_ts.js:166739:19) at getApp (http://localhost:4200/apps_frontend_src_app_app_module_ts.js:122971:25) at getAuth (http://localhost:4200/apps_frontend_src_app_app_module_ts.js:137360:77) at http://localhost:4200/apps_frontend_src_app_app_module_ts.js:69140:44 at http://localhost:4200/apps_frontend_src_app_app_module_ts.js:69066:57 at ZoneDelegate.invoke (http://localhost:4200/polyfills.js:463:26) at Zone.run (http://localhost:4200/polyfills.js:225:43) at NgZone.runOutsideAngular (http://localhost:4200/vendor.js:34688:28) at runOutsideAngular (http://localhost:4200/apps_frontend_src_app_app_module_ts.js:69066:33) at http://localhost:4200/apps_frontend_src_app_app_module_ts.js:69140:17 at http://localhost:4200/apps_frontend_src_app_app_module_ts.js:1581:144 at http://localhost:4200/apps_frontend_src_app_app_module_ts.js:68430:47 at ZoneDelegate.invoke (http://localhost:4200/polyfills.js:463:26)Estoy totalmente confundido sobre por qué recibo este error. ¡Cualquier ayuda es muy apreciada!
Aparentemente, el problema era una falta de coincidencia en las versiones entre firebase y @firebase/app . Debido a esta discrepancia, firebase se cargó en la memoria dos veces, pero solo se creó una vez.
Los documentos sugieren que el código que ingresaste en los proveedores debería estar en las importaciones.
import { provideFirebaseApp, getApp, initializeApp } from '@angular/fire/app'; import { getFirestore, provideFirestore } from '@angular/fire/firestore'; @NgModule({ imports: [ provideFirebaseApp(() => initializeApp({ ... })), provideFirestore(() => getFirestore()), ], ... }) export class AppModule { }Humm... está bien, estoy usando la versión 9 actualizada de la 8 en mi proyecto, y comentaste algunas cosas o te faltan algunas. Permítanme compartir mi módulo:
const providers = [ // ... AngularFireModule, AngularFireAnalyticsModule, AngularFireAuthGuard, ScreenTrackingService, UserTrackingService, AngularFireAnalytics, { provide: ANALYTICS_CONFIG, useValue: { APP_NAME: appConfig.appName, APP_VERSION: appConfig.appVersion } } ]; @NgModule({ imports: [ // ... /** Firebase Modules */ AngularFireModule.initializeApp(firebaseConfig), AngularFireAnalyticsModule, AngularFireAuthGuardModule, AngularFireDatabaseModule, AngularFireFunctionsModule, // ... ], providers, bootstrap: [RootComponent] })Entonces, mi aplicación de inicialización está en mis importaciones y no en mis proveedores. Recuerdo que tuve algunos problemas en ese entonces y después de investigar y cambiar un poco, se me ocurrió lo anterior y funcionó para mí. Como puede ver, uso bastantes de sus servicios.
Por el error que publicaste, supongo que el problema es que tu initializeApp no realiza la inicialización, así que intenta moverlo a importaciones y asegúrate de que el archivo de configuración tenga todas las propiedades requeridas.
==ACTUALIZAR==
Tenga en cuenta que pegué las importaciones de mi proyecto, puede ignorar todo lo demás que no sea la importación y los proveedores de AngularFireModule , ya que no puede usar los demás, solo los agregué como referencia, ya que podrían ser útiles para otras personas.