使用requirejs加载Firebase js时出错 [英] Error loading firebase js with requirejs
问题描述
我使用RequireJS加载Firebase js库,如下所示:
I load Firebase js library with RequireJS like this:
require([
'firebase-app',
'firebase-storage'
], function (firebase) {
firebase.initializeApp({...});
firebase.storage();
});
直到Firebase js版本4.12.1一切正常,由于4.13.0版本发布,我在"firebase.storage()"调用中收到以下错误:
Until Firebase js release 4.12.1 everything was ok, since 4.13.0 release I get these errors on "firebase.storage()" call:
TypeError:无法读取未定义的属性'registerService' 在Firebase上(index.esm.js:3442) 在index.esm.js:3434
TypeError: Cannot read property 'registerService' of undefined at firebase (index.esm.js:3442) at index.esm.js:3434
和
未捕获的错误:无法实例化firebase-storage-确保首先加载firebase-app.js. 在firebase(index.esm.js:3444) 在index.esm.js:3434
Uncaught Error: Cannot instantiate firebase-storage - be sure to load firebase-app.js first. at firebase (index.esm.js:3444) at index.esm.js:3434
在Firebase 4.13.0发行说明中,我认为此更改破坏了我的代码: https://firebase.google.com/support/release-notes/js#版本_4130_april_19_2018
In Firebase 4.13.0 release notes there is this the change I think is breaking my code: https://firebase.google.com/support/release-notes/js#version_4130_april_19_2018
[CHANGED]重构为对我们的Polyfills/Shims使用core-js.
[CHANGED] Refactored to use core-js for our Polyfills/Shims.
"core-js"是此库: https://github.com/zloirock/core- js
"core-js" is this library: https://github.com/zloirock/core-js
这些是jsfiddle示例:
These are the jsfiddle examples:
- 库4.12.1- https://jsfiddle.net/ptmw0srq/27/(古老而又能正常工作的人)
- 库4.13.0- https://jsfiddle.net/ptmw0srq/28/
- 图书馆5.4.0- https://jsfiddle.net/ptmw0srq/30/
- 仅加载完整的js可以再次使用- https://jsfiddle.net/ptmw0srq/72/
- library 4.12.1 - https://jsfiddle.net/ptmw0srq/27/ (the old and working one)
- library 4.13.0 - https://jsfiddle.net/ptmw0srq/28/
- library 5.4.0 - https://jsfiddle.net/ptmw0srq/30/
- loading only the full js works again - https://jsfiddle.net/ptmw0srq/72/
推荐答案
在此页面上找到了解决方案(仅对Firebase版本> = 5.5.6有效):
Found the solution at this page (valid only for firebase release >= 5.5.6):
https://github.com/firebase/firebase -js-sdk/issues/1266#issuecomment-441405513
您必须像"@ firebase/app"那样调用firebase.app.js,因此:
you must call firebase.app.js like "@firebase/app", so:
var config = {
paths: {
'@firebase/app': 'https://www.gstatic.com/firebasejs/5.7.1/firebase-app',
'@firebase/storage': 'https://www.gstatic.com/firebasejs/5.7.1/firebase-storage'
}
};
require([
'@firebase/app',
'@firebase/storage'
], function (firebase) {
firebase.initializeApp({
...
});
firebase.storage();
});
最终jsfiddle: https://jsfiddle.net/ptmw0srq/125/
final jsfiddle: https://jsfiddle.net/ptmw0srq/125/
这篇关于使用requirejs加载Firebase js时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!