СБОЙ ВНУТРЕННЕГО ПОЛЬЗОВАНИЯ Firestore: получен результат для пустого конвейера записи - PullRequest
0 голосов
/ 06 марта 2019

Я использую Firebase-Firestore на Javascript (веб) с прогрессивным веб-приложением.Я столкнулся с этой ошибкой:

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() проверяет ответ и кэширует извлеченный ответ.

У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 06 марта 2019

Это был PWA! Используя PWA, я ловил все GET запросы, включая собственные GET Firebase. Фильтрация, чтобы гарантировать, что запросы 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

Лично я потратил много времени на это, поэтому надеюсь, что это поможет:)

...