рабочий ящик не загружает файлы в памяти с помощью webpack-dev-server

В нашем проекте мы используем webpack-dev-server для запуска нашей среды разработки. В настоящее время мы преобразуем проект в прогрессивное веб-приложение с использованием рабочего блока.

Когда мы запускаем webpack с NODE_ENV=production, все работает нормально, так как он сначала компилирует файлы, а затем плагин workbox их подхватывает и добавляет в сервис-воркер.

Когда мы запускаем webpack-dev-server в горячем режиме, сборка завершается сбоем при запуске плагина workbox, поскольку он не может найти файлы в папке dist.

Похоже, проблема в том, что workbox не собирает файлы js и css, которые создаются в памяти, и, похоже, нуждаются в файлах в файловой системе.

module.exports = {
  context: path.resolve(__dirname, 'front'),
  entry: [
    ...preEntries,
    './react/app.js'
  ],
  output: {
    path: path.resolve(__dirname, 'front-dist'),
    filename: `react/app.${git.gitCommitAbbrev}.js`,
    chunkFilename: `react/[id].app.${git.gitCommitAbbrev}.js`,
    publicPath: '/glass/'
  },
  devtool: isProdEnv ? false : 'eval-source-map',
  stats: {
    chunkModules: false
  },
  module: {
    ...
  },
  plugins: [
    new WorkboxPlugin({
      globDirectory: path.resolve(__dirname, 'front-dist'),
      globPatterns: ['**/*.{html,js,css,woff2}'],
      swDest: path.join(path.resolve(__dirname, 'front-dist/sw/'), 'service-worker.js'),
      handleFetch: true,
      clientsClaim: true,
      skipWaiting: true,
    })
  ]
}

Любая идея о том, как это должно работать


person Thomas Gieling    schedule 13.12.2017    source источник
comment
вы прочитали developers.google.com/web/tools/workbox/get -запущен/веб-пакет?   -  person Henry    schedule 21.12.2017
comment
Они утверждали, что в этом слиянии он работает с webpack-dev-server: github.com/GoogleChrome/ workbox/pull/808 Но у меня все та же проблема. Если в файловой системе нет каталога сборки, он просто не работает :(   -  person Rubens Pinheiro    schedule 30.01.2018
comment
Как вы указали, это потому, что файлы находятся в памяти, а не на диске, я считаю, что этот ответ может помочь вам здесь - stackoverflow.com/questions/41928358/   -  person Neil    schedule 28.04.2018
comment
Вы нашли решение с тех пор?   -  person Kev    schedule 16.02.2019


Ответы (1)


Последние выпуски workbox-webpack-plugin поддерживают файловые системы в памяти с помощью покрытие в наборе тестов.

Если у вас по-прежнему возникают проблемы с текущей версией Workbox, откройте вопрос на трекер проблем, и мы можем продолжить расследование.

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

person Jeff Posnick    schedule 15.12.2020