#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. я пытался сделать это так, как вы, и это ничего не меняет. Я подозреваю, что, как говорится в документах, мне нужно использовать функцию инициализации.