使用requirejs加载Firebase js时出错 [英] Error loading firebase js with requirejs

查看:52
本文介绍了使用requirejs加载Firebase js时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用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:

  • 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆