Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pwa- Service worker not work #4540

Open
ohrrkan opened this issue Aug 11, 2022 · 8 comments
Open

Pwa- Service worker not work #4540

ohrrkan opened this issue Aug 11, 2022 · 8 comments

Comments

@ohrrkan
Copy link

ohrrkan commented Aug 11, 2022

Bug report

The service worker not work with webpack DevServer also when dev-server is configure in write memory like specify in :
(https://webpack.js.org/configuration/dev-server/) writes in-memory

Actual Behavior

The service worker is register and activated but event are never trigger. no error

Expected Behavior

Event of service worker should be trigger

How Do We Reproduce?

  • Register your service worker :
    if ('serviceWorker' in navigator) {
        try {
            var registration = await navigator.serviceWorker.register('/sw.js', { scope: './' });
            var serviceWorker;
            if (registration.installing) {
                serviceWorker = registration.installing;
                console.log('installing : ' + serviceWorker.state);
            } else if (registration.waiting) {
                serviceWorker = registration.waiting;
                console.log('waiting : ' + serviceWorker.state);
            } else if (registration.active) {
                serviceWorker = registration.active;
                console.log('active : ' + serviceWorker.state);
            }
        } catch (err) {
            console.error(err);
        }
    }
    else {
        console.error('Service workers are not supported.');
    }
  • sw.js

self.addEventListener('install', event => { console.log('Hello'); });

with other web server you will have in the console :

active : activated
Hello

but with dev-server only

active : activated

Please paste the results of npx webpack-cli info here, and mention other relevant information

"webpack": "5.74.0",
"webpack-dev-server": "4.10.0"

const serverConfig = { client: { overlay: false, logging: 'error', }, devMiddleware: { writeToDisk: true, }, open: false, https: false, host: '127.0.0.1', port: 5800, hot: true, liveReload: false, static: { directory: path.join(__dirname, 'dist/'), } };

@alexander-akait
Copy link
Member

Please create reproducible test repo, hard to say what is wrong

@thebat93
Copy link

thebat93 commented Aug 12, 2022

Are you using multiple entries for app and service worker? If yes, try this solution.

I'm still having trouble with hot reloading though.

@alexander-akait
Copy link
Member

@thebat93 Do you use plugin for service worker code generation or it is self-created code?

@thebat93
Copy link

thebat93 commented Aug 12, 2022

@alexander-akait it is a self created code. For debug purposes it has only install, activate, fetch hooks with logs. The file is used as one of two entries for webpack. Also I use this config:

  optimization: {
    // runtimeChunk: 'single',
    runtimeChunk: {
      name: (entrypoint: any) => {
        if (entrypoint.name.startsWith("service-worker")) {
          return null;
        }

        return `runtime-${entrypoint.name}`;
      },
    },
    splitChunks: {
      chunks(chunk) {
        return chunk.name !== "service-worker";
      },
    }
  }

@thebat93
Copy link

Here's my message in another issue

@thebat93
Copy link

And here are the errors that I'm getting when I try to change some app code and wait for hot reload. Sorry for spamming.

Снимок экрана 2022-08-12 в 18 26 07

@thebat93
Copy link

@alexander-akait here is a minimal test repo with the issue: https://github.com/thebat93/sw-webpack-hmr
I mentioned solutions that I tried in webpack config file.

@ohrrkan
Copy link
Author

ohrrkan commented Aug 14, 2022

Confirm what you say @thebat93 . Your solution to bypass the issue on pack-dev-server work :

 optimization: {

        splitChunks: {
            chunks(chunk) {
                return chunk.name !== "sw";
            },
        },

    },

Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants