Нет провайдера для AngularFireDatabase, AngularFireAuth
Извиняюсь, потому что я не могу придумать лучший способ включить всю информацию... Когда я запускаю это, я получаю сообщение об ошибке следующего содержания. Я следовал за Ionic Docs до T, я не могу понять, что может быть неправильным.
Ошибка:
Нет провайдера для AngularFireDatabase!
![Error]()
Package.json
![Package]()
App.module.ts
![App.Module]()
home.html
![Home HTML]()
Home.ts
![Home TS]()
Ответы
Ответ 1
AngularDatabase
(то же самое для AngularAuth) разделяется на собственный модуль AngularFireDatabaseModule
(AngularFireAuthModule for AngularAuth) из
версия [email protected], см. документация здесь.
вам нужно импортировать AngularFireDatabaseModule
(AngularFireAuthModule для аутентификации) в RootModule
.
import { AngularFireModule } from 'angularfire2';
// for AngularFireDatabase
import { AngularFireDatabaseModule } from 'angularfire2/database';
import { AngularFireDatabase, FirebaseObjectObservable } from 'angularfire2/database';
// for AngularFireAuth
import { AngularFireAuthModule } from 'angularfire2/auth';
import { AngularFireAuth } from 'angularfire2/auth';
@NgModule({
imports: [
AngularFireModule.initializeApp({ <---- main module
apiKey: ...,
authDomain: '...',
databaseURL: '...',
storageBucket: '...',
messagingSenderId: '...'
}),
AngularFireDatabaseModule, <---- for database
AngularFireAuthModule <---- for auth
]
})
Ответ 2
Внутри app.module.ts добавить ниже:
import { AngularFireModule } from 'angularfire2';
import { AngularFireDatabaseModule } from 'angularfire2/database';
Затем импортируйте, как показано ниже:
@NgModule({
declarations: [
MyApp,
HomePage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
AngularFireModule.initializeApp(firebaseConfig),
AngularFireDatabaseModule
],
Внутри home.ts используйте, как показано ниже:
import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';
items: FirebaseListObservable<any[]>;
constructor(public navCtrl: NavController, db: AngularFireDatabase) {
this.items = db.list('/items');
}
Моя ионическая информация:
Ionic Framework: 3.1.1
Ionic App Scripts: 1.3.7
Angular Core: 4.0.2
Angular Compiler CLI: 4.0.2
Node: 6.10.1
OS Platform: macOS Sierra
Ответ 3
Добавьте его в массив поставщиков в app.module.ts -
imports: [
BrowserModule,
FormsModule,
HttpModule,
RouterModule.forRoot(appRoutes),
AngularFireModule.initializeApp(firebaseConfig)
],
providers: [AuthService,**AngularFireAuth, AngularFireDatabase**, AuthGuard, InventoryService]
Ответ 4
Убедитесь, что FireBaseDatabaseModule импортируется из angularfire2/database-устарело, если вы используете FireBaseDatabase из angularfire2/database-deprecated
и наоборот. Единственная проблема заключается в несоответствии операторов импорта, поскольку они должны принадлежать к одному и тому же пакету либо
angularfire2/database или
angularfire2/базы данных осуждается
если вы попытаетесь импортировать базу данных из первого и модуля из второго пакета или наоборот. Он не распознает его как DatabaseModule или Database.
------------ ROOT MODULE -------------
import { AngularFireDatabaseModule } from "angularfire2/database-deprecated"
imports: [
BrowserModule,
RouterModule.forRoot(appRoutes),
FormsModule,
AngularFireModule,
AngularFireDatabaseModule,
AngularFireAuthModule,
AngularFireModule.initializeApp(environment.firebase)
]
------- СЕРВИСНЫЙ КЛАСС ------------
import { AngularFireDatabase, FirebaseListObservable } from "angularfire2/database-deprecated";
Ответ 5
У меня была эта ошибка в моем приложении Angular. Оказывается, мой авто-импорт импортировал AngularFirebase
из 'angularfire2/database-deprecated
'. Очистка -deprecated
решила мою проблему. Вы также можете проверить свой импорт.