2016-04-24 30 views
3

私はAngbase 2アプリケーションにFirebaseを統合しようとしていますが、このエラーは継続しています。Firebase is not a constructor。以下は、私がやったことです:index.htmlの中でスクリプトを参照しFirebaseはコンストラクタではありません

  1. インストールfirebase使用亭
  2. bootstrap()
  3. を通してそれを提供
  4. Firebaseサービス
  5. を作成firebase周囲タイピング
  6. をインストールし、それがコンポーネントに

FirebaseService.ts

@Injectable() 
export class FirebaseService 
{ 
    dataRef: Firebase; 
    constructor() { 
     this.dataRef = new Firebase('https://boiling-inferno-1117.firebaseio.com/votes'); 
    } 
} 

boot.ts注射持っていた

bootstrap(App, [HTTP_PROVIDERS, 
    ROUTER_PROVIDERS, 
    IdentityService, 
    ApiService, 
    UrlService, 
    provide(FirebaseService, {useValue: new FirebaseService()}) 
]) 
.catch(err => console.error(err)); 

app.ts

@Component({ 
    selector: 'app', 
    templateUrl: 'app/app.html', 
    directives: [AuthRouterOutlet, ROUTER_DIRECTIVES] 
}) 
export class App {   
    constructor(private firebase:FirebaseService) 
    { 

    }   
} 

Systemjs設定:

System.config({ 
    defaultJSExtensions: true, 
    map: { 
     'jquery': 'vendors/js/jquery', 
     'firebase': 'vendors/js/firebase' 
    }, 
    packages: { 
     angular2: { defaultExtension: false }, 
     rxjs: { defaultExtension: false } 
    } 
}); 

と以下のようにFirebaseをインポートする:

import * as Firebase from 'firebase';

私はこの状況を解決するために何ができるか上の任意の提案大変感謝しています。

+0

これは:(FirebaseService、{useValue:new FirebaseService()})がタイプミスであると仮定できますか?プロバイダを使用する必要があり、後で配列を取得するためです。プロバイダ:[FirebaseService] –

+0

SystemJSの設定も可能ですか? Firebaseクラスをインポートする方法は?ありがとう! –

+0

@ R.リチャードもそれを試しました。同じエラー。 – lbrahim

答えて

1

私はこの方法Firebaseを構成します。詳細についてはAngularfire2のドキュメントを参照してください

import * as Firebase from 'firebase'; 

  • System.config({ 
        map: { 
        firebase: '/node_modules/firebase/lib/firebase-web.js', 
        (...) 
        }, 
        (...) 
    }); 
    

    とtypescriptファイルでこのようにそれをインポートしますhttps://github.com/angular/angularfire2

+0

'firebase-web.js'ファイルを' node_modules'フォルダから 'dist/vendors/js'ディレクトリにコピーするgulpタスクがあります。それはあなたが示したものと本質的に同じように見えます。私が間違っている? – lbrahim

+0

実際には、SystemJS設定にjsファイル以外のフォルダを指定します;-) jsファイルをマップする必要があります。 –

+0

ベンダー/ js/firebaseここでfirebaseはfirebase.jsのようなファイル名です。 'defaultJSExtensions:true'が有効なので、' .js'が追加されているようです。それは私の設定からjqueryがうまく動作する理由です。 – lbrahim

関連する問題