@ vue / cli-plugin-pwa не создает service-worker.js - PullRequest
0 голосов
/ 25 февраля 2019

Итак, у меня уже есть приложение Vue, и я хочу добавить PWA.Я установил @ vue / cli-plugin-pwa , и после первой сборки мои registerServiceWorker.js (в src) и manifest.json (в открытом доступе) были созданы автоматически и, кажется, работают нормально.Но, насколько я понимаю, он должен также генерировать services-worker.js в моей папке dist после запуска npm run build.Если я загружаю файлы сборки на сервер, я получаю

A bad HTTP response code (404) was received when fetching the script.
Failed to load resource: net::ERR_INVALID_RESPONSE
Error during service worker registration: TypeError: Failed to register a ServiceWorker: A bad HTTP response code (404) was received when fetching the script.

Это также происходит, если я создаю пользовательский service-worker.js

Как я добавил пользовательский service-worker.js

1: Создан service-worker.js в папке src

// service-worker.js
console.log('Service Worker Registered!')

2: Создан vue.config.js в ~ /

// vue.config.js
module.exports = {
  // ...other vue-cli plugin options...
  pwa: {
    name: 'My App',
    themeColor: '#4DBA87',
    msTileColor: '#000000',
    appleMobileWebAppCapable: 'yes',
    appleMobileWebAppStatusBarStyle: 'black',

    // configure the workbox plugin
    workboxPluginMode: 'InjectManifest',
    workboxOptions: {
      // swSrc is required in InjectManifest mode.
      swSrc: './src/service-worker.js',
      // ...other Workbox options...
    }
  }
}

Если я запускаю npmпри сборке с использованием service-worker.js он по-прежнему не создает service-worker.js в моей папке dist и выдает те же ошибки при загрузке на сервер.Сервер является сервером с поддержкой https.я что-то упускаю или неправильно понимаю?заранее спасибо.

Редактировать: я также получаю ту же ошибку, если вручную добавляю файл service-worker.js в папку dist

registerServiceWorker.js

import { register } from 'register-service-worker'

if (process.env.NODE_ENV === 'production') {
  register(`${process.env.BASE_URL}service-worker.js`, {
    ready () {
      console.log(
        'App is being served from cache by a service worker.\n' +
      )
    },
    registered () {
      console.log('Service worker has been registered.')
    },
    cached () {
      console.log('Content has been cached for offline use.')
    },
    updatefound () {
      console.log('New content is downloading.')
    },
    updated () {
      console.log('New content is available; please refresh.')
    },
    offline () {
      console.log('No internet connection found. App is running in offline mode.')
    },
    error (error) {
      console.error('Error during service worker registration:', error)
    }
  })
}

1 Ответ

0 голосов
/ 25 февраля 2019

У меня были очень похожие проблемы много раз.Похоже, это что-то на стороне плагина, особенно когда вы вообще используете нестандартное имя SW или кастомное SW.

Что я могу порекомендовать - вместо использования плагина (который использует рабочий ящик).использовать рабочий ящик напрямую.Это установка 3-х команд.

npm install -g workbox-cli

Затем в вашем проекте

workbox wizard

Ответьте на вопросы, и это сгенерирует workbox.config.js.

Затем просто вставьтетот же код, который у вас есть из плагина для регистрации и типа процесса сборки

workbox generateSW workbox-config.js

Это сработало для меня.Ниже приведен хороший учебник, объясняющий этот процесс более подробно

https://medium.com/google-developer-experts/a-5-minute-intro-to-workbox-3-0-156803952b3e

...