GoogleChromeLabs / pwa-wp

WordPress feature plugin to bring Progressive Web Apps (PWA) to Core
https://wordpress.org/plugins/pwa/
GNU General Public License v2.0
605 stars 96 forks source link

Workbox logs errors to console in Site Editor #1127

Open westonruter opened 3 months ago

westonruter commented 3 months ago

As reported in a support topic by @ravanh, when the PWA plugin is active the browser console has an error appearing in the Site Editor:

Uncaught (in promise) TypeError: Failed to register a ServiceWorker: The URL protocol of the scope (':') is not supported.
    at a.es (Workbox.js:486:55)
    at a.register (Workbox.js:299:41)

This is coming from the iframe that the Site Editor wraps around the template:

<iframe class="edit-site-visual-editor__editor-canvas" aria-label="Editor Canvas" role="button" name="editor-canvas" tabindex="0" src="blob:https://elegant-addax-156c1d.instawp.xyz/7291cd8a-0a26-4dec-89a0-4b0d98ccd472" title="Editor canvas" style="border: 0px; margin-left: auto; margin-right: auto; transition: all 0.3s ease 0s;"></iframe>

Inside this iframe, the service worker is attempting to get installed:

<script type="module">
        import { Workbox } from "https:\/\/elegant-addax-156c1d.instawp.xyz\/wp-content\/plugins\/pwa\/wp-includes\/js\/workbox-v7.0.0\/workbox-window.prod.js";

        if ( 'serviceWorker' in navigator ) {
            window.wp = window.wp || {};
            window.wp.serviceWorkerWindow = new Workbox(
                "https:\/\/elegant-addax-156c1d.instawp.xyz\/wp-admin\/admin-ajax.php?action=wp_service_worker",
                {"scope":"\/wp-admin\/"}            );
            window.wp.serviceWorkerWindow.register();
        }
</script>

And this is where the error is happening.

Two possible solutions here: (1) prevent this script from being injected when in the Site Editor, or (2) prevent attempting to register when the current page is a blob, such as if location.protocol === 'blob:' .

In any case, the error doesn’t seem like it is going to be causing any actual functionality problem other than the console getting populated with the error entry.