2017-05-04 98 views
13

道歉,因爲我想不出包含所有信息的更好的方式......當我運行這個時,我得到一個錯誤說以下內容。我跟着Ionic Docs去了T,我找不出什麼可能是錯的。沒有AngularFireDatabase,AngularFireAuth的供應商

錯誤:

No provider for AngularFireDatabase!

Error

的package.json Package

App.module.ts App.Module

Home.html中 Home HTML

Home.ts Home TS

+3

請不要共享文字圖片。相反,分享文本並使用Stack Overflow/Markdown的格式化選項進行格式化(cmd/ctrl K是你的朋友)。 –

回答

41

AngularDatabase相同爲AngularAuth)被分離到其自身的模塊AngularFireDatabaseModuleAngularFireAuthModule爲AngularAuth)從 版本[email protected],見文檔here

您應該在RootModule中輸入AngularFireDatabaseModuleAngularFireAuthModule用於驗證)。

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

好吧,我這樣做,擺脫了所有錯誤(太棒了!)但是,它仍然沒有讀取Firebase的信息? – Slabach

+0

@Slabach你的firebase的配置可能有問題。我剛剛將我的示例項目[email protected]+更新爲[email protected]+,並且看到它運行良好。 – Pengyy

+0

謝謝,你真棒! –

11

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] 
0

我在角應用了這個錯誤。原來我的自動導入從'angularfire2/database-deprecated'導入AngularFirebase。清除-deprecated解決了我的問題。你可能也想檢查你的進口。

3

make如果你使用的FireBaseDatabase確保FireBaseDatabaseModule從angularfire2 /數據庫棄用的進口從angularfire2 /數據庫棄用

,反之亦然。唯一的問題是import語句的不匹配,因爲他們必須屬於同一個包或者

angularfire2 /數據庫或 angularfire2 /數據庫棄用

,如果你會嘗試從第一和導入數據庫來自第二個包的模塊,反之亦然。它不會將其識別爲DatabaseModule或數據庫。

------------根模塊-------------

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";