Сервисный работник помечен как избыточный - PullRequest
0 голосов
/ 08 июля 2019

Сервисный работник не будет установлен и сохранит свой статус в избыточном. Обновление страницы добавит больше обслуживающего работника в избыточном состоянии (серый индикатор).

Я попытался console.log ("установлен") в аргументе функции self.addEventListener, и это сработало. Работник службы помечен как активированный и работающий (зеленый индикатор)

ниже сделает работника службы становится избыточным

self.addEventListener("install", function (event) {
    event.waitUntil(
        caches.open(CACHE_NAME).then(function (cache) {
            var newImmutableRequests = [];
            return Promise.all(
                immutableRequests.map(function (url) {
                    return caches.match(url).then(function (response) {
                        if (response) {
                            return cache.put(url, response);
                        } else {
                            newImmutableRequests.push(url);
                            return Promise.resolve();
                        }
                    });
                })
            ).then(function () {
                return cache.addAll(newImmutableRequests.concat(mutableRequests));
            });
        })
    );
});

Ниже будет работать, но он не кеширует файлы

self.addEventListener("install", function (event) {
    console.log("installed");
});

Я ожидаю, что сервисный работник будет установлен и сможет кэшировать файлы, но вместо этого он переходит в избыточное состояние.

1 Ответ

0 голосов
/ 08 июля 2019

В вашем коде есть хотя бы одна проблема:

return caches.match(url).then(function (response) {

должно быть cache без s, верно? caches - это глобальный интерфейс Cache API, а cache в вашем коде - это переменная, ссылающаяся на один экземпляр кэша.

Кроме того, чтобы упростить поиск ошибок в коде, рассмотрите возможность добавления обработки ошибок. В вашем коде нет обработчиков Promise.catch, поэтому он просто проглатывает все ошибки:)

...