nuxt: Service Worker "import sentry-release-injection" error when loading page
https://github.com/getsentry/sentry-javascript-bundler-plugins/issues/460
@ArnauKokoro posted this issue in the getsentry/sentry-javascript-bundler-plugins repo.
Within this issue @Iforst writes the following: https://github.com/getsentry/sentry-javascript-bundler-plugins/issues/460#issuecomment-1884699497
Hi, this is probably a bug somewhere in workbox or VitePWA, would you mind opening an issue in their respective repositories?
You can point them to this comment. My suspicion here is that they are trying to resolve or rewrite the virtual module which they should generally not do since it starts with a null bye \0. This is a convention in rollup/vite that everybody building plugins should adhere to.
Ideally you also share your build logs in case there are any warnings or similar!
Here’s what my generated service worker looks like:
/**
* Copyright 2018 Google Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// If the loader is already loaded, just stop.
if (!self.define) {
let registry = {};
// Used for `eval` and `importScripts` where we can't get script URL by other means.
// In both cases, it's safe to use a global var because those functions are synchronous.
let nextDefineUri;
const singleRequire = (uri,parentUri)=>{
uri = new URL(uri + ".js",parentUri).href;
return registry[uri] || (
new Promise(resolve=>{
if ("document"in self) {
const script = document.createElement("script");
script.src = uri;
script.onload = resolve;
document.head.appendChild(script);
} else {
nextDefineUri = uri;
importScripts(uri);
resolve();
}
}
)
.then(()=>{
let promise = registry[uri];
if (!promise) {
throw new Error(`Module ${uri} didn’t register its module`);
}
return promise;
}
));
}
;
self.define = (depsNames,factory)=>{
const uri = nextDefineUri || ("document"in self ? document.currentScript.src : "") || location.href;
if (registry[uri]) {
// Module is already loading or loaded.
return;
}
let exports = {};
const require = depUri=>singleRequire(depUri, uri);
const specialDeps = {
module: {
uri
},
exports,
require
};
registry[uri] = Promise.all(depsNames.map(depName=>specialDeps[depName] || require(depName))).then(deps=>{
factory(...deps);
return exports;
}
);
}
;
}
define(['./workbox-ffaa3760'], (function(workbox) {
'use strict';
self.addEventListener('message', event=>{
if (event.data && event.data.type === 'SKIP_WAITING') {
self.skipWaiting();
}
}
);
/**
* The precacheAndRoute() method efficiently caches and responds to
* requests for URLs in the manifest.
* See https://goo.gl/S9QRab
*/
workbox.precacheAndRoute([{
"url": "/",
"revision": "0.ia2na8sk9i"
}], {});
workbox.cleanupOutdatedCaches();
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("/"),{
allowlist: [/^\/$/]
}));
}
));
//# sourceMappingURL=sw.js.map
;import "/_nuxt/@id/__x00__sentry-release-injection-file";
The last line ;import "/_nuxt/@id/__x00__sentry-release-injection-file";
is causing the error:
And idea on how we can get vite-pwa to work with Sentry Vite plugin?
About this issue
- Original URL
- State: open
- Created 2 months ago
- Comments: 19 (14 by maintainers)
You can check any custom sw in the vite pwa plugin examples folder or here in nuxt playground: check also a working (production) example with some runtime caching entries and some exclusions like api calls (also with some advanced features like push notifications, push notification clicks and web shared target api):
https://github.com/elk-zone/elk/blob/main/service-worker/sw.ts
I’ll send you a PR to your repro and so you can see the changes, I’m finishing some tests like build the sw.
@userquin I am trying to use
generateSW
so I don’t need to write a custom SW. Here is a minimal reproduction of the issue I am experiencing.I have instructions on how to reproduce in readme.
https://github.com/MaxWeisen/vite-pwa-sentry-plugin-issue
Thank you!