在latest @angular/fire中出错:Firebase:未创建Firebase应用程序“[DEFAULT]”-调用Firebase应用程序.initializeApp()

acruukt9  于 2023-11-21  发布在  Angular
关注(0)|答案(4)|浏览(180)

我最近升级到了最新版本的@angular/fire,一切都很好,但是现在我已经从compat库迁移出来了,现在我被这个问题卡住了。我在下面的代码中得到了这个错误: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 {
  // ...
}

字符串
下面是堆栈跟踪:

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)


我完全搞不懂为什么我得到这个错误.任何帮助是非常感谢!

2vuwiymt

2vuwiymt1#

显然,问题是firebase@firebase/app之间的版本不匹配。由于这种不匹配,firebase实际上被加载到内存中两次,但只示例化了一次。

vaqhlq81

vaqhlq812#

是,执行ng-update - update所有列出的pkg

qij5mzcb

qij5mzcb3#

docs建议您放在提供程序中的代码应该在导入中。

import { provideFirebaseApp, getApp, initializeApp } from '@angular/fire/app';
import { getFirestore, provideFirestore } from '@angular/fire/firestore';

@NgModule({
  imports: [
    provideFirebaseApp(() => initializeApp({ ... })),
    provideFirestore(() => getFirestore()),
  ],
  ...
})
export class AppModule { }

字符串

n8ghc7c1

n8ghc7c14#

嗯..好吧,我在我的项目中使用的是从8升级到9的版本,你要么注解掉了一些东西,要么你确实缺少了一些东西。让我分享一下我的模块:

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]
})

字符串
所以我的初始化应用程序是在我的进口,而不是在我的供应商,我记得我有一些问题,然后经过一些挖掘和改变,我想出了上述和它为我工作.正如你可以看到我使用相当多的他们的服务.
从你发布的错误中,我猜问题是你的initializeApp没有进行初始化,所以试着把它移到导入中,并确保配置文件具有所有必需的属性。
==更新==
请注意,我粘贴了我的项目导入,你可以忽略除AngularFireModule导入和提供程序之外的所有其他内容,因为你可能不会使用其他内容,我只是添加它们作为参考,因为它们可能对其他人有用。

相关问题