В Angular 2 не создано приложение Firebase «[ПО УМОЛЧАНИЮ]»

#angular #firebase #firebase-realtime-database #firebase-authentication

#angular #firebase #firebase-realtime-database #firebase-аутентификация

Вопрос:

Используя Angular 2 CLI, у меня есть следующий код:

 joinSubmit(){
    var self = this;
    firebase.auth().createUserWithEmailAndPassword(
        'test@test.com', 
        'testpassword'
        )
        .then(function(response){
            var userdetail = {};
            userdetail['/users/' response.uid] = {
                username: 'test',
                useremail: 'test@test.com'
            };
            firebase.database().ref().update(userdetail);
        });
        this.router.navigate(['profile']);
}
  

К сожалению, когда я запускаю его, я получаю No Firebase App ошибку [ПО УМОЛЧАНИЮ] has been created - call Firebase App.initializeApp() .

Мой app.module выглядит так (очевидно, с заполненными ключами API):

 import * as firebase from 'firebase';
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AngularFireModule } from 'angularfire2';

import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
import { J2InvestRoutingModule } from './app-routing.module';
import { NavigationComponent } from './navigation/navigation.component';
import { JoinComponent } from './join/join.component';
import { SignComponent } from './sign/sign.component';
import { ProfileComponent } from './profile/profile.component';


  export const firebaseConfig = {
    apiKey: "",
    authDomain: "",
    databaseURL: "",
    storageBucket: "",
    messagingSenderId: ""
  };

@NgModule({
  declarations: [
    AppComponent,
    HomeComponent,
    NavigationComponent,
    JoinComponent,
    SignComponent,
    ProfileComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    J2InvestRoutingModule,
    ReactiveFormsModule,
    AngularFireModule.initializeApp(firebaseConfig)
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
  

Между тем мой package.json выглядит следующим образом:

 {
  "name": "j2-invest",
  "version": "0.0.0",
  "license": "MIT",
  "angular-cli": {},
  "scripts": {
    "start": "ng serve",
    "lint": "tslint "src/**/*.ts"",
    "test": "ng test",
    "pree2e": "webdriver-manager update",
    "e2e": "protractor"
  },
  "private": true,
  "dependencies": {
    "@angular/common": "2.0.0",
    "@angular/compiler": "2.0.0",
    "@angular/core": "2.0.0",
    "@angular/forms": "2.0.0",
    "@angular/http": "2.0.0",
    "@angular/platform-browser": "2.0.0",
    "@angular/platform-browser-dynamic": "2.0.0",
    "@angular/router": "3.0.0",
    "angularfire2": "^2.0.0-beta.5",
    "core-js": "^2.4.1",
    "firebase": "^3.4.1",
    "rxjs": "5.0.0-beta.12",
    "ts-helpers": "^1.1.1",
    "zone.js": "^0.6.23"
  },
  "devDependencies": {
    "@types/jasmine": "^2.2.30",
    "angular-cli": "1.0.0-beta.16",
    "codelyzer": "~0.0.26",
    "jasmine-core": "2.4.1",
    "jasmine-spec-reporter": "2.5.0",
    "karma": "1.2.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-cli": "^1.0.1",
    "karma-jasmine": "^1.0.2",
    "karma-remap-istanbul": "^0.2.1",
    "protractor": "4.0.9",
    "ts-node": "1.2.1",
    "tslint": "3.13.0",
    "typescript": "2.0.2"
  }
}
  

Не знаю, как исправить эту ошибку. Пожалуйста, сообщите. Спасибо.

ОБНОВИТЕ, чтобы в документах был скрипт для инициализации приложения Firebase.

   // Intialize the "[DEFAULT]" App
  var mainApp = firebase.initializeApp({
    // ...
  }); 
  

Как мне включить это в мои функции Firebase? Например, скажем, если бы у меня был следующий код:

 runner(){
    var mainApp = firebase.initializeApp({});
    firebase.auth().createUserWithEmailAndPassword('chase', 'myface');    
}
  

Обновить

Итак, я обнаружил, что, похоже, возникла какая-то проблема с получением моего app.module для инициализации моей настройки Firebase. Поскольку наличие подобной функции делает свое дело:

     rest(){

    const firebaseConfig = {
    apiKey: "",
    authDomain: "",
    databaseURL: "",
    storageBucket: "",
    messagingSenderId: ""
};

    firebase.initializeApp();
        firebase.auth().createUserWithEmailAndPassword('chevy@chase.com', 'hispassword'); 
    } 
  

Хотя это работает, также вряд ли идеально вводить firebase.initializeApp() каждый раз, когда я делаю вызов.

Комментарии:

1. Вы инициализировали приложение?

2. Если я поставлю firebase.initializeApp(firebaseConfig); прямо под своим firebaseConfig , это все равно ничего не даст.

3. К. Я смотрю на документы и у меня есть вопрос по этому поводу. Обновит этот вопрос.

4. Проверьте мой ответ

Ответ №1:

Я думаю, это вам поможет. Инициализируйте приложение в главном компоненте.

 AngularFireModule.initializeApp({
  apiKey: "*******************",
  authDomain: "**********.firebaseapp.com",
  databaseURL: "https://*********.firebaseio.com",
  storageBucket: ""
})
  

Проверьте следующий плунжер

Комментарии:

1. итак, в моем первоначальном вопросе я забыл указать, что у меня есть «AngularFireModule.initializeApp (firebaseConfig)». я полностью виноват. с тех пор я обновил q. я пытался сделать это так, как вы, и это ничего не меняет. Я подозреваю, что, как говорится в документах, мне нужно использовать функцию инициализации.