我想在Require.js中使用Firebase-数据库和Firebase-Storage。
我的文件结构设置如下:
../
js/
app.js
lib/
require.js
app/
main.js
firebase_refs.js
我的app.js配置文件:
requirejs.config({
"baseUrl": "js/lib",
"paths": {
"app": "../app",
"firebase_refs": "../app/firebase_refs",
"jquery": "//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min",
"firebase": "//www.gstatic.com/firebasejs/5.5.6/firebase-app",
"firebase-auth": "//www.gstatic.com/firebasejs/5.5.6/firebase-auth",
"firebase-database": "//www.gstatic.com/firebasejs/5.5.6/firebase-database",
"firebase-storage": "//www.gstatic.com/firebasejs/5.5.6/firebase-storage",
},
"shim": {
"firebase": {
exports: "firebase"
},
"firebase-database": {
exports: "firebase-database"
},
"firebase-storage": {
exports: "firebase-storage"
}
}
});
requirejs(["app/main"]);
我的main.js文件(我用来初始化Firebase):
define(['firebase'], function (firebase) {
var FirebaseAppInit = {
setupFirebase: function(){
var config = {
apiKey: "xxx",
authDomain: "xxx",
databaseURL: "xxx",
storageBucket: "xxx",
};
firebase.initializeApp(config);
}
};
return FirebaseAppInit;
});
我的firebase_refs.js文件(我用来声明firebase数据库根引用和存储引用):
requirejs(["app/main"]);
define(['firebase-database', 'firebase-storage'], function(FirebaseDatabase, FirebaseStorage){
var Refs = {
rootRef: function(){
return FirebaseDatabase.database().ref();
},
storage: function(){
return FirebaseStorage.storage();
}
};
return Refs;
});
最后,在我的index.html文件中:
<script>
var test_header = document.getElementById("test_header");
require(['app/main'], function(firebase){
firebase.setupFirebase();
require(['app/firebase_refs'], function(FirebaseRefs){
var dbRef = FirebaseRefs.rootRef().child('some kind of text');
dbRef.on('value', snap => test_header.innerText = snap.val());
});
});
</script>
我遇到的问题是
我得到的错误是:
Error: Script error for "@firebase/app", needed by: firebase-database, firebase-storage
https://requirejs.org/docs/errors.html#scripterror
我知道我加载firebase-database和firebase-storage的顺序有问题,但我不知道在哪里。有什么建议吗?
发布于 2019-06-19 22:24:37
您应该使用另一个路径:
...
"paths": {
...
"@firebase/app": "//www.gstatic.com/firebasejs/5.5.6/firebase-app",
"@firebase/auth": "//www.gstatic.com/firebasejs/5.5.6/firebase-auth",
"@firebase/database": "//www.gstatic.com/firebasejs/5.5.6/firebase-database",
"@firebase/storage": "//www.gstatic.com/firebasejs/5.5.6/firebase-storage",
},
...
然后在您的main.js文件中使用它
define(['@firebase/app'], function (firebase) {
console.log(firebase);
}
https://stackoverflow.com/questions/53103964
复制相似问题