Старый работник службы не позволит go - PullRequest
3 голосов
/ 04 февраля 2020

У меня был PWA несколько лет go ... Это работало достаточно хорошо. Я ничего не знал о работниках сферы услуг, но приложение «Реакция» пришло с одним… и оно, похоже, позволило моему приложению работать в автономном режиме. yay.

Теперь у меня есть новая версия приложения - началось с нуля. Я удалил все файлы v1 с веб-сервера и загрузил все файлы v2. Я go веб-сервер на https://fakeurldomain.com и получаю старую версию ... вроде как и ожидалось.

Я нажимаю refre sh ... старая версия.

Я закрываю браузер ... загружаю его обратно ... go на fakeurldomain.com ... получаю старую версию.

Я нажимаю Ctrl + Shift + R для жесткого обновления sh ... НОВАЯ ВЕРСИЯ !! ууу!

Обновить sh страницу ... вернуться к старой версии (НЕТ!)

Перезагрузить браузер ... вернуться к старой версии ... (НЕТ!)

Чего мне не хватает?

Когда я нажимаю refre sh, когда смотрю на сервисного работника в инструментах разработки, я вижу следующее значение sh up: Notice the

Я также получаю следующую ошибку ... хотя я признаю, я не знаю, существовала ли эта ошибка в v1 программного обеспечения или нет ... enter image description here

1 Ответ

3 голосов
/ 04 февраля 2020

Вам необходимо отменить регистрацию старого работника сервиса.

Я предполагаю, что вы не включили новый скрипт ServiceWorker, такой как тот, который поставляется с приложением Create React App с файлами v2, поэтому браузер все еще использует ранее зарегистрированного работника службы.

Для отладки можно вручную отменить регистрацию работника службы в инструментах разработчика браузера, например:

Chrome DevTools > Application > Service Workers > Unregister

Однако предыдущие посетители вашего сайта, скорее всего, также кэшируют вашу страницу, поэтому вам следует программно отменить регистрацию работника сервиса. Это можно сделать, найдя и отменив регистрацию зарегистрированного сервисного работника с помощью ServiceWorkerContainer.getRegistration ()

navigator
    .serviceWorker
    .getRegistration()
    .then((serviceWorker) => {
        if (serviceWorker) {
            serviceWorker.unregister();  
    }})
    .catch((error) => {
        console.error("There was an error: ", error);
    });

Подробнее о сервисных работниках можно прочитать по следующей ссылке : Работники сферы обслуживания: введение

...