1つの変更:
import * as firebase from 'firebase';
から
import {firebase} from 'firebase';
にはあなたの例は、firebase 3.6で動作させるには十分です。
しかし、私はそれが偶然働いていると思います。 firebase.js
は全くのモジュールのようには見えませんが、それはmodule.exports
を使用するか、またはdefine
をamdのいない、それだけで次のプロパティを持つグローバル変数firebase
を作成します。おそらく
INTERNAL: Object
Promise: Promise()
SDK_VERSION: "3.6.4"
User: (a, b, c)
__esModule: true
app: a(a)
apps: (...)
get apps:()
auth: (c)
database: (c)
default: Object
initializeApp: (a, c)
messaging: (c)
storage: (c)
__proto__: Object
、それはSystemJSがそれをラップすることができ__esModule
の存在です別のオブジェクトで - import * as firebase from 'firebase'
の結果でデバッガを見ると、必要な実際のモジュールであるfirebase
という名前の単一のプロパティが含まれています。
興味深いことに、firebase.d.ts
は
import {firebase} from 'firebase';
firebase.initializeApp(...);
作品、一見equvalentが
import * as firebase from 'firebase';
firebase.firebase.initializeApp(...);
です。TypeCheckないように書かれています。
AngularFire2の問題のPlunkerを準備するとき、私はFirebaseとSystemJSに問題がありました。私はバージョン3.4.0を使用しなければならなかった。それ以降のバージョンでは、TypeJScriptの定義にSystemJSが好きではないものがありますが、私はそれを調べませんでした。 – cartant
@cartant:はい、バージョン3.4.0に戻すと、SystemJSの問題が解決されたようです。それぞれの 'firebase.js'ファイルは、バージョン3.4と3.5の間で変更されたようです。それ以降のバージョン(> 3.4)では 'firebase.js'にすべてのjavascriptがあり、モジュールの書き出しはありません。一方、v3.4は単に他のファイルを必要とし、モジュール 'firebase'をエクスポートします。私は、それ以降のバージョンではモジュールのエクスポートの不足と関係があると思いますが、必ずしもそうではありません。 –
@artem:D'oh!それはあなたが長い間スクリーンを見つめていることを知ったときです...幸いなことに、テストベッドのみです。知らせてくれてありがとうございます。 –