Firebase 实时数据库 once 方法在 Web 扩展中不起作用

Firebase realtime database once method doesn't work in web extensions

我正在使用 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 更新后,它在那里也不起作用。默默地死在某处...

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

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

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