Проблема создания работника службы с sw-precache в реакции - PullRequest
0 голосов
/ 12 октября 2018

Я создал приложение реагирования с помощью приложения create-реагировать.Затем я решил, что мне нужно отредактировать / обновить код сервисного работника в соответствии с моими потребностями.

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

Это конфигурация, которую я использую в 'sw-precache-config.js' -

module.exports = {
  staticFileGlobs: [
'build/static/css/**.css',
'build/static/js/**.js',
'index.html',
'/'
  ],
  swFilePath: './build/serviceWorker.js',
  templateFilePath: './service-worker.tmpl',
  stripPrefix: 'build/',
  handleFetch: false,
  runtimeCaching: [{
   urlPattern: /this\\.is\\.a\\.regex/,
  handler: 'networkFirst'
 }]
}

Это команда сборки в моем package.json-

"build": "react-scripts build && sw-precache --config=sw-precache-config.js",

Однако после сборки возникают две проблемы -

  1. Несмотря на то, что в файле конфигурации я упомянул, что имя работника службы должно быть 'serviceWorker.js ', процесс сборки генерирует два файла сервисных работников -

    serviceWorker.js и service-worker.js

  2. В сгенерированном serviceWorker.js (сборкапо сценарию сборки) файл «index.html» не упоминается в предварительном кэше (поэтому работник службы не кэширует index.html, как предполагалось) -

    var precacheConfig =<br> [["static/css/main.d35a7300.chunk.css","5cf96316c6919194ba6eb48522a076f0"],["static/js/1.6105a37c.chunk.js","ae3537cefdcf8ee5758c3af13aab4568"],["static/js/main.4857c4da.chunk.js","9d6cc8fb962129f3e8bc459c85d39297"],["static/js/runtime~main.229c360f.js","3b44b5daad3fcbefa8b355dfbc3d9630"]];

Пожалуйста, дайте мне знать, если я могу уточнить что-нибудье.

1 Ответ

0 голосов
/ 12 октября 2018

Заменить index.html в staticFileGlobs на build/index.html

Вы получаете два рабочих файла сервиса, потому что вы указываете имя: serviceWorker.js отличается от имени по умолчанию, с которым работает CRA: service-worker.js

Измените swFilePath на service-worker.js, и это должно исправить это.

...