如何解决未定义firebase错误?

fdbelqdn  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(167)

我是firebase/javascript/html编码的新手,所以我真的不知道我在做什么,但是我正在学习一个关于如何让firebase和WebGL Unity版本一起工作的教程,并且在这里卡住了:
html代码

<script type="module">
          // Import the functions you need from the SDKs you need
          import { initializeApp } from "https://www.gstatic.com/firebasejs/9.15.0/firebase-app.js";
          import { getDatabase } from "https://www.gstatic.com/firebasejs/9.15.0/firebase-database.js";
          // Your web app's Firebase configuration
          // For Firebase JS SDK v7.20.0 and later, measurementId is optional
          const firebaseConfig = {
              apiKey: "apikey",
              authDomain: "authDomain.firebaseapp.com",
              databaseURL: "databaseURL.firebasedatabase.app",
              projectId: "projectId",
              storageBucket: "storageBucket.appspot.com",
              messagingSenderId: "messagingSenderId",
              appId: "appId",
              measurementId: "G-measurementId"
          };
          // Initialize Firebase
          const app = initializeApp(firebaseConfig);
          const db = getDatabase(app);
      </script>

第一个月

PostJSON: function(path, value, objectName, callback, fallback) {
        var parsedPath = Pointer_stringify(path);
        var parsedValue = Pointer_stringify(value);
        var parsedObjectName = Pointer_stringify(objectName);
        var parsedCallback = Pointer_stringify(callback);
        var parsedFallback = Pointer_stringify(fallback);

        try {

            firebase.database().ref(parsedPath).set(JSON.parse(parsedValue)).then(function(unused) {
                unityInstance.Module.SendMessage(parsedObjectName, parsedCallback, "Success: " + parsedValue + " was posted to " + parsedPath);
            });

        } catch (error) {
            unityInstance.Module.SendMessage(parsedObjectName, parsedFallback, JSON.stringify(error, Object.getOwnPropertyNames(error)));
        }
    }

'
每次我尝试发布一个值时,它都会说:未定义firebase。我做错了什么?

ffscu2ro

ffscu2ro1#

您将Firebase SDK版本8及更早版本的命名空间firebase.database()语法与Firebase SDK版本9及更高版本的模块化initializeApp语法混合在一起,这不起作用。
由于您正在初始化模块化SDK,因此您的数据库访问代码也应该使用新的模块化语法:

import { getDatabase, ref, set } from "firebase/database";

const db = getDatabase();
set(ref(db, parsedPath), JSON.parse(parsedValue)).then(function(unused) {
    unityInstance.Module.SendMessage(parsedObjectName, parsedCallback, "Success: " + parsedValue + " was posted to " + parsedPath);
});

要了解如何升级代码,请查看migration guide,并将Firebase文档放在手边,因为其中的所有代码示例都有这两种语法的变体,如reading and writing data上的此页面所示。

相关问题