2017-05-09 7 views
0

Ich benutze angularfire2 für meine Angular Web Apps und ich habe vor kurzem auf die v4.0.0-rc0 aktualisiert. Es verhält sich auf verschiedene Weise anders. Die Sache, mit der ich Hilfe brauche, ist die Verwendung von 'Firebase' (die reguläre Firebase JS-Bibliothek) auf der Seite angularfire2 in der Version v4.0.0. In früheren Versionen würden Sie importieren:Verwenden von "Firebase" mit AngularFire2 v4

import * as firebase from 'firebase'; 

und dann die reguläre Bibliothek Firebase JS verwenden mit Aussagen wie folgt aus:

firebase.database().ref().child("message").set("hi"); 

, die in früheren Versionen gut funktioniert, finden Sie in diesem Video, um mehr über diesen Ansatz (es ist eine Anforderung bei der Lagerung verwendet wird): https://www.youtube.com/watch?v=nMR_JPfL4qg#t=6m11s

aber wenn ich versuche, das gleiche mit v4.0.0-RC0 zu tun ich diese Fehlermeldung:

Firebase: Es wurde keine Firebase-App '[DEFAULT]' erstellt - rufen Sie Firebase App.initializeApp() (app/no-app) auf.

Ich kann die Nachricht lesen und erkennen, dass es denkt, dass initializeApp nicht aufgerufen wurde. Aber wenn ich den angularfire2 v4 Code wie folgt ...

this.afDatabase.object("somepath").subscribe((myData: any) => { 
     console.log("My data", data); 
    }); 

, das alles in Ordnung ist, da ich zum initializeApp in meinem app.module.ts. So das eigentliche Problem ist, dass zuvor die Zeile:

AngularFireModule.initializeApp(environment.firebaseConfig), 

für beiden angularfire2 gearbeitet und die regelmäßigen Firebase JS-Bibliothek, aber jetzt ist es nicht. Was ist der richtige Weg, um die reguläre Firebase JS-Bibliothek für die Datenbank jetzt zu verwenden? Rufe ich firebase.initializeApp auch im app.module.ts auf? Das scheint schlecht zu sein, um 2 InitializeApp-Aufrufe zu machen, aber ich kenne den richtigen Weg nicht.

+0

Haben Sie Module zu Lazy Loading geändert? – rashidnk

Antwort

3

Ermittelt mein Problem, ich musste nicht geben Sie einen benutzerdefinierten Namen in meiner app.module.ts, wenn ich die App initialisiert. Dies funktioniert gut:

AngularFireModule.initializeApp(environment.firebaseConfig), 

Das war schlecht:

AngularFireModule.initializeApp(environment.firebaseConfig, 'myApp'), 
+0

hatte gerade das gleiche Problem. Es sieht so aus, als ob die [docs] (https://github.com/angular/angularfire2/blob/master/docs/1-install-and-setup.md#user-content-custom-firebaseapp-names) nicht aktualisiert wurden noch. – Leo

0

Sie die neuen Implementierungen Module in Ihrem Import setzen müssen und setzen import * as firebase from 'firebase/app'; in der Komponente, wo Sie gonna verwenden Anbieter var provider = new firebase.auth.GoogleAuthProvider();

sind
 import { AngularFireModule } from 'angularfire2'; 
     import { AngularFireDatabaseModule } from 'angularfire2/database'; 
     import { AngularFireAuthModule } from 'angularfire2/auth'; 

     export const environment = { 
     production: false, 
     firebase: { 
      apiKey: "dfgdfgdsfgdfgsdfg", 
      authDomain: "fire-dfgdfg.sdfgdfg.com", 
      databaseURL: "https://fire-dsfgdfg.dfgdfgdf.com", 
      projectId: "fire-dfgdfg", 
      storageBucket: "fire-dfgdfg.appspot.com", 
      messagingSenderId: "65456456464654" 
     } 
     } 

     @NgModule({ 
     imports: [ 
      BrowserModule, 
      BrowserAnimationsModule, 
      AppRoutingModule, 
      BsDropdownModule.forRoot(), 
      TabsModule.forRoot(), 
      ChartsModule, 
      AngularFireModule.initializeApp(environment.firebase), 
      AngularFireDatabaseModule, 
      AngularFireAuthModule 
     ], 
     declarations: [ 
      AppComponent, 
      FullLayoutComponent, 
      SimpleLayoutComponent, 
      ChatLayoutComponent, 
      NAV_DROPDOWN_DIRECTIVES, 
      BreadcrumbsComponent, 
      SIDEBAR_TOGGLE_DIRECTIVES, 
      AsideToggleDirective 
     ], 
     providers: [{ 
      provide: LocationStrategy, 
      useClass: HashLocationStrategy 
     }], 
     bootstrap: [AppComponent] 
     }) 
Verwandte Themen