Firestore内部断言失败:得到空写入管线的结果

时间:2019-03-05 21:18:39

标签: javascript firebase google-cloud-firestore progressive-web-apps

我正在将Java(网络)上的Firebase-Firestore与渐进式Web应用程序一起使用。我遇到了这个错误:

INTERNAL ASSERTION FAILED: Got result for empty write pipeline

由于Firebase与XHR请求异步运行,因此难以确定错误的确切来源-似乎任何onSnapshotsetupdate都对我抛出此错误

在第一个错误之后,又出现了一系列其他错误:

INTERNAL ASSERTION FAILED: AsyncQueue is already failed: Error: FIRESTORE (5.3.0) INTERNAL ASSERTION FAILED: Got result for empty write pipeline

我认为我的操作非常正常-发生时仅使用API​​ set(), update() , onSnapshot()函数。

这不是关键任务错误-代码运行正常,但是在打开调试程序时遇到了数千个错误,因此在这方面是禁止的。

对于我的PWA,我使用的是缓存优先的网络更新模型,该模型返回cachedResponse,但也fetch()生成响应并缓存获取的响应。

有人有见识吗?

1 个答案:

答案 0 :(得分:0)

这是PWA!使用PWA,我捕获了所有GET请求,包括Firebase自己的GET的请求。进行过滤以确保CORS请求不会从缓存中返回,从而解决了该问题。

为解决此问题,我将此代码添加到了PWA中:

self.addEventListener("fetch", event => {
    if (event.request.method == "GET") {
      event.respondWith(
        (async function() {
          const cachedResponse = await cache.match(event.request, {
            ignoreSearch: true
          });
          // Returned the cached response if we have one, otherwise return the network response.
          if (cachedResponse && event.request.type!="cors") {
            //AVOID CORS FOR THINGS LIKE FIREBASE
            updateCache(event);
            return cachedResponse;
          } else return await updateCache(event);
        })()
      );
    } else {
      event.respondWith(fetch(event.request));
    }
  });

如果您是PWA领域的新手,或者想快速入门任何PWA项目,或者只是想“分享笔记”,则包含完整的PWA文件的仓库位于:https://github.com/acenturyandabit/genUI/blob/master/Javascript/pwa.js < / p>

我个人为此花费了很多时间,希望对您有所帮助:)