Сервисный работник был успешно зарегистрирован, но код в файле serviceworker.js не был выполнен - PullRequest
0 голосов
/ 24 декабря 2018

Сервисный работник был успешно зарегистрирован (это было показано в devtools), но код в файле serviceworker.js не был выполнен.

Я хочу добавить обслуживающий работник в мой проект Vue, используя webpack в качестве инструмента для сборки.

Некоторая другая полезная информация:

1.Serviceworker.js используется в качестве отдельного входного файла, гарантируя, что выходное имя файла по-прежнему будет servicerworker.js (другие входные файлы будут переименованы по хеш-значениям)

Включение работника службы через HTTP в chrome (для определенного источника) с использованием некоторых флагов.Вы можете обратиться к Параметру командной строки для внесения в белый список определенных источников, чтобы упростить разработку и тестирование веб-сайтов с использованием только функций Secure Origin .

3.WebpackConfig.js: devServer.publicPath is /static/

index.html:

<script>
    if ('serviceWorker' in navigator) {
        navigator.serviceWorker.register('/static/serviceworker.js', { 
            scope: '/static/' 
        }).then(function (reg) {
            console.log('Registration succeeded. Scope is ' + reg.scope);
        }).catch(function (error) {
            console.log('Registration failed with ' + error);
        });
    }
</script>

serviceworker.js:

console.log('Hello from sw.js')

ожидается:

  1. Я ожидаю, что работник сервиса будет успешно зарегистрирован.

  2. Консоль может распечатать:

    "Регистрация успешно завершена. Область действия myOrigin / static /"

    "Hello from sw.js"

результаты:

  1. Сервисный работник успешно зарегистрирован с точки зрения инструментов dev и chrome: // serviceworker-internals/ (Мне жаль, что у меня недостаточно репутации для публикации фотографий, поэтому я дам две ссылки.).

devTool

хром: // внутренние работники /

Консоль только распечатывает:

"Регистрация прошла успешно. Область действия myOrigin / static /"

1 Ответ

0 голосов
/ 25 декабря 2018

Я предполагаю, что ваш файл serviceworker.js содержит только такой большой код

    console.log('Hello from sw.js');

Это не сработает, вам нужно добавить EventListener в ваш serviceworker.js, а затем добавить в него console.log. Например

    self.addEventListener('fetch',function(event){
       console.log('Hello from sw.js');
    })

Для справки https://developers.google.com/web/ilt/pwa/introduction-to-service-worker

...