Workbox wbepack encore не работает (в приложении Symfony 4)

Прошу прощения, если вопрос уже был найден, и что на него есть ответ, но в исследовании intenert я не нашел ничего, что работало.

Вот моя проблема, я начал с рабочего окна, и я попытался интегрировать его в свое приложение Symfony 4, которое все еще использует веб-пакет, но не работает должным образом. Итак, я попытался сгенерировать сервис-воркер с помощью cli, но все еще не могу заставить его работать.

Конфигурация моего веб-пакета на бис:

const Encore = require('@symfony/webpack-encore');
const CompressionPlugin = require('compression-webpack-plugin');
const {GenerateSW, InjectManifest} = require('workbox-webpack-plugin');
const path = require('path')

Encore
    .setOutputPath('public/build/')
    .setPublicPath('/build')
    .addEntry('app', './assets/js/app.js')
    .addEntry('cart', './assets/js/cart.js')
    .addEntry('site', './assets/js/site.js')
    .cleanupOutputBeforeBuild()
    .enableBuildNotifications()
    .enableSourceMaps(!Encore.isProduction())
    .enableVersioning(Encore.isProduction())
    .enableSassLoader()
    .enableVueLoader(() => {}, { runtimeCompilerBuild: false })
    .addLoader({
        test: /\.exec\.js$/,
        loader: 'script-loader'
    })
    .autoProvidejQuery()
    .autoProvideVariables({
        $: 'jquery',
        jQuery: 'jquery',
        'window.jQuery': 'jquery',
    })
    .enableSingleRuntimeChunk()
    .addPlugin(new CompressionPlugin())
    .addPlugin(new GenerateSW({swDest:  'sw.js'}))
    .addPlugin(new InjectManifest({
        swSrc: 'sw.js',
        exclude: [
            /\.map$/,
            /manifest$/,
            /\.htaccess$/,
            /service-worker\.js$/,
            /sw\.js$/,
        ],
    }));



module.exports = Encore.getWebpackConfig();

для ошибки создания веб-пакета я обнаружил это: https://github.com/GoogleChrome/workbox/issues/1513 но

После cli generateSW у меня появляется эта ошибка:

 error 

Can't find self.__WB_MANIFEST in your SW source.

для манифеста wb я нашел это: Рабочая панель Webpack Не могу найти self .__ WB_MANIFEST в исходном ПО, но у меня не работает

Я думаю, что проблема связана с URL-адресом, созданным веб-пакетом, и я нашел это: Не удается установить сервисный воркер workbox-webpack-plugin в корневой URL-адрес для приложения React, он устанавливается на localhost: 8080 / dist Но я не вижу как это помогает мне в моей конфигурации.

Я пробовал использовать path.resolve (потому что на форуме я видел работу), но у меня это не работает, я получаю эту ошибку:

Can't find self.__WB_MANIFEST in your SW source.

Спасибо за помощь !


person ph1823    schedule 18.05.2020    source источник


Ответы (1)


import { precacheAndRoute } from 'workbox-precaching';
// Your other import statements go here.

precacheAndRoute(self.__WB_MANIFEST);

На вашем sw.js

person user2165986    schedule 14.12.2020
comment
Пожалуйста, отредактируйте свой ответ, включив в него объяснение того, как это работает и почему это решение проблемы, описанной в вопросе. См. Как ответить. - person Yunnosch; 14.12.2020