使用requirejs加载Firebase js时出错

时间:2018-08-09 11:15:57

标签: javascript firebase requirejs

我使用RequireJS加载Firebase js库,如下所示:

require([
    'firebase-app',
    'firebase-storage'
], function (firebase) {
    firebase.initializeApp({...});
    firebase.storage();
});

直到Firebase js版本4.12.1一切正常,由于4.13.0版本发布,我在“ firebase.storage()”调用中收到以下错误:

  

TypeError:无法读取未定义的属性'registerService'       在firebase(index.esm.js:3442)       在index.esm.js:3434

  

未捕获的错误:无法实例化firebase-storage-确保首先加载firebase-app.js。       在firebase(index.esm.js:3444)       在index.esm.js:3434

在Firebase 4.13.0发行说明中,我认为此更改破坏了我的代码: https://firebase.google.com/support/release-notes/js#version_4130_april_19_2018

  

[CHANGED]重构为对我们的Polyfills / Shims使用core-js。

“ core-js”是该库:https://github.com/zloirock/core-js

这些是jsfiddle示例:

1 个答案:

答案 0 :(得分:0)

在此页面上找到了解决方案(仅对Firebase版本> = 5.5.6有效):

https://github.com/firebase/firebase-js-sdk/issues/1266#issuecomment-441405513

您必须像“ @ firebase / app”一样调用firebase.app.js,因此:

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/