SystemJS和Firebase
我正在尝试将Firebase与Angular 2、SystemJS和Typescript结合使用。我有以下文件层次结构: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
_ 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版本时出现的问题。看见