Open userquin opened 2 years ago
I fix packages/vite/src/client/overlay.ts
and packages/vite/src/client/client.ts
checking for typeof window
, but it seems we cannot use dynamic imports on service workers (I think on web workers
should work):
The link if someone interested: https://github.com/w3c/ServiceWorker/issues/1356
A question about building vite
on local via pnpm run build-vite
script: why each time I build vite
, this file packages/vite/LICENSE.md
is changed? All licenses removed:
PR https://github.com/vitejs/vite/pull/9064 fixed for me the HTMLElement is not defined
error with HMR on web workers. Perhaps that would also fix the issue on service workers?
PR #9064 fixed for me the
HTMLElement is not defined
error with HMR on web workers. Perhaps that would also fix the issue on service workers?
The issue is now with react-refresh (I think?)
@react-refresh:367 Uncaught ReferenceError: window is not defined
at @react-refresh:367:1
which is this line
I am now hitting the issue with $RefreshReg$
as well, after updating Vite to fix the one with overlay.ts
trans-utils.tsx:5 Uncaught ReferenceError: $RefreshReg$ is not defined
My stack trace is on a random (the first in the dependency graph maybe?) bit of JSX.
Has anyone come up with a solution?
The way to solve this is by adding a side-effectful module that you import before any other modules in your worker.
Describe the bug
I'm trying to add HMR to a service worker, I don't know if I can do that, right now it is failing.
The sw code:
The client error:
The failing code:
Reproduction
Here the branch on my repo: https://github.com/userquin/vite-plugin-pwa/tree/feat/add-development-support
pnpm
installed globally required andnode 12+
, I'm testing withnode 15
vianvm
: once cloned and checkoutfeat/add-development-support
executepnpm install && pnpm run build
from root folder.To run the sw example on dev, execute, also from root folder,
pnpm run example:dev:sw
.Open the app in Chrome, it is registered with
type: 'module'
.If you remove the
import.meta.hot
fromexamples/vue-basic-inject-manifest/src/sw.ts
, the service worker will work.The logic for the plugin can be found on
src/index.ts
, search last plugin (name: 'vite-plugin-pwa:dev-sw'
), the internal logic onsrc/dev.ts
: the example onexamples/vue-basic-inject-manifest
.System Info
Used Package Manager
pnpm
Logs
Since it is on client, here the logs on dev tools (see screenshots):
Validations