Как использовать базу данных Firebase и хранилище Firebase с Require.js - PullRequest
0 голосов
/ 01 ноября 2018

Я хочу использовать Firebase-Database и Firebase-Storage с Require.js.

Моя файловая структура настроена так:

../
   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 и хранилище firebase, но я не вижу, где. Есть предложения?

1 Ответ

0 голосов
/ 19 июня 2019

Вы должны использовать другой путь:

...
"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);
}
...