Я пытаюсь создать PWA с помощью VUE.
При попытке зарегистрировать работника службы я делаю это в файле main.js следующим образом:
main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router'
Vue.config.productionTip = false
new Vue({
router,
render: h => h(App)
}).$mount('#app')
const prod = process.env.NODE_ENV === 'production';
const swLocation = '../public/sw-config.js';
if (
prod &&
('https:' === location.protocol || location.host.match(/(localhost|127.0.0.1)/)) &&
navigator.serviceWorker
) {
navigator.serviceWorker.register(swLocation).catch( error => console.log)
console.log('sw register');
}
Как вы можете видеть, мой файл рабочего сервиса называется sw-config.js, который находится в общей папке на том же уровне, что и index.html.
Но в момент выполнения npm запустите build и выполните это с локального сервера с помощью npm http-server Я получаю сообщение через консоль: "sw register" Но также следующие ошибки:
При получении сценария получен неверный код ответа HTTP (404).Не удалось загрузить ресурс: net :: ERR_INVALID_RESPONSE
Я также заметил, что эта ошибка не отображается в консоли при первом запуске приложения, но при перезагрузке - при запуске.
Я попытался исправить это, очистив всех зарегистрированных сервисных работников, чтобы убедиться, что это ошибка, но она не работает, это код, который я использовал в консоли Chrome:
navigator.serviceWorker.getRegistrations().then(function(registrations) { for(let registration of registrations) { registration.unregister() } })
В Chrome Developer Tools у меня есть это:
Chrome => Dev Tools => Приложение => Сервисные работники => Обновление при перезагрузке (выбрано)
Я не знаю, как избежать этой ошибки вконсоль, кто-нибудь может мне помочь?
Спасибо!
![Errors on Console](https://i.stack.imgur.com/vjxQq.png)