diff --git a/packages/@vuepress/plugin-pwa/lib/enhanceAppFile.js b/packages/@vuepress/plugin-pwa/lib/enhanceAppFile.js index 1a1ae43ed2..e96d1df491 100644 --- a/packages/@vuepress/plugin-pwa/lib/enhanceAppFile.js +++ b/packages/@vuepress/plugin-pwa/lib/enhanceAppFile.js @@ -1,7 +1,6 @@ /* global SW_BASE_URL, SW_ENABLED, GA_ID, ga, SW_UPDATE_POPUP, SW_POPUP_COMPONENT */ import Vue from 'vue' -import { register } from 'register-service-worker' import SWUpdateEvent from './SWUpdateEvent' import event from './event' @@ -10,12 +9,13 @@ if (SW_UPDATE_POPUP && SW_POPUP_COMPONENT === 'SWUpdatePopup') { Vue.component('SWUpdatePopup', () => import('./SWUpdatePopup.vue')) } -export default ({ router, isServer }) => { - // Register service worker - router.onReady(() => { - if (process.env.NODE_ENV === 'production' - && !isServer - && SW_ENABLED) { +export default async ({ router, isServer }) => { + if (process.env.NODE_ENV === 'production' && !isServer && SW_ENABLED) { + // register-service-worker@1.7.0 references `window` in outer scope, so we have to import it dynamically in client + const { register } = await import('register-service-worker') + + // Register service worker + router.onReady(() => { register(`${SW_BASE_URL}service-worker.js`, { registrationOptions: {}, ready () { @@ -49,6 +49,6 @@ export default ({ router, isServer }) => { } } }) - } - }) + }) + } } diff --git a/packages/@vuepress/plugin-pwa/package.json b/packages/@vuepress/plugin-pwa/package.json index 14f77a7643..02a1373ae5 100644 --- a/packages/@vuepress/plugin-pwa/package.json +++ b/packages/@vuepress/plugin-pwa/package.json @@ -22,7 +22,7 @@ "main": "index.js", "dependencies": { "@vuepress/shared-utils": "^1.3.1", - "register-service-worker": "^1.5.2", + "register-service-worker": "^1.7.0", "workbox-build": "^4.3.1" }, "publishConfig": { diff --git a/yarn.lock b/yarn.lock index ab0d6c343d..1e9f1485d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11104,9 +11104,10 @@ regexpu-core@^4.6.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.1.0" -register-service-worker@^1.5.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/register-service-worker/-/register-service-worker-1.6.2.tgz#9297e54c205c371c6e49bfa88f6997e8dd315f4c" +register-service-worker@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/register-service-worker/-/register-service-worker-1.7.0.tgz#b4b60d87a1d117f119bfd24ece073dcdb85dae64" + integrity sha512-sJQIxgodrulyN4d+bTkRnroPNMH3i1J4kP7Wm+vLhTP5CdbDSRr5jCeC9sJ6jyL603IZVbMAZ5HcU0hWCbJQQA== registry-auth-token@^4.0.0: version "4.0.0"