sw-precache-webpack-plugin шаблон работника службы webpack по умолчанию

Я использую sw-precache-webpack-plugin для создания сервисного работника для моего проекта, я вижу все свои шрифты, файлы js и css в хранилище кеша, но не файл index/html, и он не работает, когда я иду не в сети. Я также получаю сообщение «Невозможно установить сайт: соответствующий сервисный работник не обнаружен». когда я пытаюсь добавить на домашнюю страницу в манифесте приложения.

Мой стек представляет собой универсальное приложение React + redux с Express + ejs для индексного файла. Я не уверен, что это потому, что я использую ejs, а не HTML-файл по умолчанию, но, похоже, он не находит файл. Есть ли способ указать шаблон? Моя настройка веб-пакета sw-precache-webpack-plugin:

new SWPrecacheWebpackPlugin({
 cacheId: 'tester',
 filename: 'my-service-worker.js',
 directoryIndex: '/',
}),

Любой совет будет принят во внимание


person Graeme Paul    schedule 06.01.2017    source источник


Ответы (1)


Вам не хватает спецификации стратегии кэширования в конфигурации плагина.

plugins: [
    new SWPrecacheWebpackPlugin({
        cacheId: 'tester',
        filename: 'my-service-worker.js',
        runtimeCaching: [
        {
            urlPattern: '/',
            handler: 'cacheFirst',
        }
        ]
    })
]

Документация: https://github.com/GoogleChrome/sw-precache#runtimecaching-arrayobject< /а>

person Petr K.    schedule 11.01.2017
comment
Спасибо за ответ, я только что сделал сборку и очистил сервисного работника. К сожалению, это не сработало. - person Graeme Paul; 11.01.2017
comment
@GraemePaul Вам удалось решить эту проблему, поскольку у меня точно такая же проблема? - person TheoG; 14.03.2017
comment
@GraemePaul Неважно. Ответ, предложенный Педро, действительно работает. Просто была проблема с кэшированием. - person TheoG; 14.03.2017
comment
@TheoG Моя проблема заключалась в двух вещах: во-первых, отсутствовал ответ Педро для кэширования стратегии. У меня были проблемы с расположением файла для сервис-воркера, добавление статического пути в экспресс-исправлено. app.use('/sw.js', express.static(path.join(__dirname, '../../client/dist/sw.js'))); - person Graeme Paul; 14.03.2017