diff --git a/packages/workbox/templates/sw.register.js b/packages/workbox/templates/sw.register.js index 1a7fc379..4494136b 100755 --- a/packages/workbox/templates/sw.register.js +++ b/packages/workbox/templates/sw.register.js @@ -1,20 +1,25 @@ -export default async function (ctx, inject) { +function onError(error) {<% if (options.dev) { %>console.error('Error registering workbox:', error) <% } %>} + +export default function (ctx, inject) { let workbox = {} try { + // workbox-window does not detects unsupported browsers if (!'serviceWorker' in navigator) { - throw new Error('Serviceworker is not supported!') + throw new Error('serviceWorker is not supported in current browser!') } + // Use require() instead of import() to prevent creating extra chunk + // Use es5 version to prevent crashing older browsers while parsing bundle const { Workbox } = require('workbox-cdn/workbox/workbox-window.<%= options.dev ? 'dev' : 'prod' %>.es5.mjs') workbox = new Workbox('<%= options.swURL %>', { scope: '<%= options.swScope %>' }) - workbox.register() - } catch (e) { - console.warn('Cannot register workbox:', e) + workbox.register().catch(onError) + } catch (error) { + onError(error) } // Inject as $workbox