SystemJS和Firebase

SystemJS和Firebase,firebase,systemjs,Firebase,Systemjs,我正在尝试将Firebase与Angular 2、SystemJS和Typescript结合使用。我有以下文件层次结构: _ www |_ app |_ etc... |_ lib |_ @angular |_ firebase |_ app.js |_ auth.js |_ firebase.js |_ firebase-auth.js |_ etc... |_ rxjs |_ etc... |_ index.html |_ systemjs.config.j

我正在尝试将Firebase与Angular 2、SystemJS和Typescript结合使用。我有以下文件层次结构:

_ www
|_ app
 |_ etc...
|_ lib
 |_ @angular
 |_ firebase
  |_ app.js
  |_ auth.js
  |_ firebase.js
  |_ firebase-auth.js
  |_ etc...
 |_ rxjs
 |_ etc...
 |_ index.html
 |_ systemjs.config.js
当我想使用Firebase时,我在我的typescript源中导入Firebase,如下所示:

import * as firebase from 'firebase';
要加载Firebase模块,我需要在
index.html
中包含以下
systemjs.config.js
脚本:

(function (global) {
    System.config({
        paths: {
            "lib:": 'lib/'
        },
        map: {
            // angular & rxjs refs go here...
            'firebase': 'lib:firebase'
        },
        packages: {
            // other package references go here...
            firebase: {
                main: 'firebase.js',
                defaultExtension: 'js'
            }
        }
    });
})(this);
但是,任何尝试使用
firebase.js
中定义的任何函数(例如
firebase.initializeApp
)都会出现异常,告诉我该函数不是函数(例如
firebase.initializeApp不是函数

如果我将
systemjs.config.js
中的Firebase的
main
引用从
Firebase.js
更改为
app.js
,那么我可以使用
Firebase.initializeApp
函数,而不会出现任何错误

仔细检查
app.js
firebase.js
表明它们的结构略有不同(我不是js专家),即
app.js

var firebase = (function(){
var firebase = null; (function()...
// more js here
... return firebase;}).call(global);
module.exports = firebase;
var firebase = null; (function() {...
// more js here
... ();}).call(this);
firebase.js

var firebase = (function(){
var firebase = null; (function()...
// more js here
... return firebase;}).call(global);
module.exports = firebase;
var firebase = null; (function() {...
// more js here
... ();}).call(this);

那么为什么
app.js
起作用,而
firbase.js
不起作用呢?要使
firebase.js
正常工作,我必须做些什么?

这似乎是使用SystemJS和最新的firebase版本时出现的问题。请看,这似乎是使用SystemJS和最新firebase版本时出现的问题。看见