首页 > 解决方案 > Firebase 实时数据库一旦方法在网络扩展中不起作用

问题描述

我正在使用 Firebase API 匿名登录并从 Tampermonkey 扩展中获取数据。在 Chrome 中用作魅力,但在 Firefox 中根本不起作用。

firebase.auth().signInAnonymously().catch(function(error) {
    console.log("login error: "+ error);
});

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    firebase.database().ref().once("value").then(function(snapshot) {
        debugger; // never gets here
        GM_setValue("lastUpdate", new Date());
        GM_setValue("lastState", snapshot.val());
    }).catch(function(error) {
        debugger; // never gets here
        console.log("error reading DB: " + error);
    });
  }
});

它永远不会出现在 Firefox 中的调试器中。控制台完全没有错误。可能是什么原因?GM_xmlhttprequest 在两者中都或多或少地工作,但我也需要身份验证,所以想使用官方 API。

谢谢你

更新:在最近的 Chrome 更新之后,它也不能在那里工作。默默地死在某个地方……

标签: firebase-realtime-databasetampermonkey

解决方案


事实证明,localStorage 中有一个值可以阻止一切正常工作。应用程序初始化中的以下代码解决了问题。

if (localStorage) { // fix for API
    localStorage.removeItem("firebase:previous_websocket_failure");
}

某些东西将其设置为 true,并且没有人在清理它。自 2017 年以来在 github 上有关于此的问题,似乎尚未解决。


推荐阅读