Включение регистрации при использовании workbox-webpack-plugin - PullRequest
0 голосов
/ 30 апреля 2020

В моем проекте была старая частичная реализация работника сервиса, использующего Workbox. Я пытался обновить его и добавить функциональность по пути. Где-то в этом процессе я потерял журналы Workbox в консоли разработчика (Chrome Версия 81.0.4044.129).

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

Я использую v5.1.3 как workbox-webpack-plugin, так и workbox-window.

Моя конфигурация веб-пакета выглядит следующим образом:

      new WorkboxWebpackPlugin.InjectManifest({
        swSrc: './src/src-serviceWorker.js',
        swDest: 'serviceWorker.js',
        exclude: [/\.map$/, /asset-manifest\.json$/]
      }),

Мой рабочий файл сервиса выглядит следующим образом:

import { precacheAndRoute } from 'workbox-precaching'
import { registerRoute } from 'workbox-routing'
import { CacheFirst } from 'workbox-strategies'


precacheAndRoute(self.__WB_MANIFEST)
self.__WB_DISABLE_DEV_LOGS = false


registerRoute(
  /https:\/\/api\.***\.com\/graphql/,
  new CacheFirst()
)

Само приложение представляет собой приложение реагирования, которое изначально было создано с помощью create -react-app, но с тех пор был удален. Журналы просматриваются только тогда, когда я выполняю производственную сборку и затем запускаюсь на локальном хосте с использованием пакета http-server .

Я проверил страницу отладки workbox вот почему я добавил в строку self.__WB_DISABLE_DEV_LOGS = false, но это не имело значения.

Есть идеи, как мне вернуть журналы? Это сделало бы мою жизнь намного проще, поскольку я пытаюсь добавить функции перемещения для работника службы. Я также дважды проверил, что у меня есть все уровни ведения журнала, видимые в инструментах Chrome Developer, включая подробные.

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

1 Ответ

2 голосов
/ 30 апреля 2020

К сожалению, это скрыто в текущих документах, но я думаю, что раздел " Хранение кода только для разработчика из пакета " документации объясняет, что происходит.

Несвязанный исходный код Workbox содержит множество подробных операторов ведения журнала , защищенных предложениями if (process.env.NODE_ENV !== 'production') {...}. webpack автоматически заменяет process.env.NODE_ENV на 'development' или 'production' в зависимости от значения параметра конфигурации mode.

Так что, если вы используете mode: 'production' в вашей компиляции webpack вы получите пакет Workbox, который намного меньше, но не содержит ни одного подробного оператора ведения журнала. (По-прежнему будет вестись менее подробное ведение журнала ошибок.)

self.__WB_DISABLE_DEV_LOGS = false полезно , если вы используете сборочную версию Workbox (т.е. если process.env.NODE_ENV заменяется на 'development' на этапе объединения), но вы все равно хотите отключить подробное ведение журнала.

...