我尝试将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时,我会在我的打字稿源中导入Firebase,如下所示:
import * as firebase from 'firebase';
要加载Firebase模块,请在systemjs.config.js
中添加以下index.html
脚本:
(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 is not a function
)。< / p>
如果我将main
中Firebase的systemjs.config.js
引用从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;
和firebase.js
var firebase = null; (function() {...
// more js here
... ();}).call(this);
那么为什么app.js
有效,firbase.js
不起作用?我需要做些什么才能让firebase.js
工作?