我正在将Java(网络)上的Firebase-Firestore与渐进式Web应用程序一起使用。我遇到了这个错误:
INTERNAL ASSERTION FAILED: Got result for empty write pipeline
由于Firebase与XHR请求异步运行,因此难以确定错误的确切来源-似乎任何onSnapshot
,set
或update
都对我抛出此错误
在第一个错误之后,又出现了一系列其他错误:
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()
生成响应并缓存获取的响应。
有人有见识吗?
答案 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>
我个人为此花费了很多时间,希望对您有所帮助:)