webpack-hot-middleware icon indicating copy to clipboard operation
webpack-hot-middleware copied to clipboard

`webpack-hot-middleware/client?reload=true` is no longer working with webpack 5.

Open WraithKenny opened this issue 3 years ago • 36 comments

  • Operating System: Mac
  • Node Version: v14.14.0
  • NPM Version: 6.14.8
  • webpack Version: 5.1.3
  • ${package} Version: 2.25.0

Expected Behavior

Expect circumstances that caused reload in webpack 4 would continue doing so in 5

Actual Behavior

Upgrading to webpack 5 causes reload to stop working, when it was with 4

Code

  // webpack.config.js
  // If your bitchin' code blocks are over 20 lines, please paste a link to a gist
  // (https://gist.github.com).
  // additional code, HEY YO remove this block if you don't need it

How Do We Reproduce?

Find code that reloads with webpack 4, and then upgrade to 5.

WraithKenny avatar Oct 20 '20 17:10 WraithKenny

Very same problem. I use express + webpack-dev-middleware + webpack-hot-middleware for live reloading on save. After update to webpack 5 I can't longer use live reload with this console warning

process-update.js:22 Ignored an update to unaccepted module ./src/App.js -> ./src/index.js

Did anyone find a way to get rid of this bug?

029A-h avatar Nov 10 '20 22:11 029A-h

The same problem. I need help

Krappt avatar Nov 14 '20 01:11 Krappt

+1

wangxdmm avatar Nov 30 '20 03:11 wangxdmm

I've hacked with a performReload because I can't wait for a proper fix: https://github.com/Xcraft-Inc/webpack-hot-middleware/commit/8562dac8bcc7c74d3ffa7ae1ee5b371e0dae335c

Skywalker13 avatar Dec 01 '20 11:12 Skywalker13

Is this going to be addressed :)?

kukjevov avatar Dec 03 '20 12:12 kukjevov

There's been a few reports of webpack 5 issues, but I haven't had time to look into them.

None of my active projects currently use hot-middleware, so this isn't a high prioritiy for me to investigate.

If someone is able to produce a minimal reproducing case and then offer a PR which resolves it, I'd make time to review and merge it.

glenjamin avatar Dec 03 '20 12:12 glenjamin

who can solve it? it is so bad

mingyuyuyu avatar Jan 04 '21 10:01 mingyuyuyu

I believe it may be a webpack 5 bug. I also created a PR that works around it, but I have no idea what I am doing or if the fix is hacky.

I combined the 2 PR's that fix webpack 5 bugs on my forked master branch, feel free to use it in npm

git+https://github.com/lukeapage/webpack-hot-middleware#2cdfe0d0111dab6432b8683112fd2d17a5e80572

e.g. for yarn

    "resolutions": {
        "webpack-hot-middleware": "git+https://github.com/lukeapage/webpack-hot-middleware#2cdfe0d0111dab6432b8683112fd2d17a5e80572",

lukeapage avatar Jan 12 '21 09:01 lukeapage

I combined the 2 PR's that fix webpack 5 bugs on my forked master branch, feel free to use it in npm

Thanks for doing this!

I'm intending to get around to this soonish, but i'm not getting a lot of free time at the moment

glenjamin avatar Jan 13 '21 15:01 glenjamin

Any ETA on this one ?:)

phaistonian avatar Jan 21 '21 09:01 phaistonian

It seems to be working

if (module['hot']) {
  module['hot'].accept();
}

zhyafe avatar Jan 22 '21 03:01 zhyafe

I believe it may be a webpack 5 bug. I also created a PR that works around it, but I have no idea what I am doing or if the fix is hacky.

I combined the 2 PR's that fix webpack 5 bugs on my forked master branch, feel free to use it in npm

git+https://github.com/lukeapage/webpack-hot-middleware#2cdfe0d0111dab6432b8683112fd2d17a5e80572

e.g. for yarn

    "resolutions": {
        "webpack-hot-middleware": "git+https://github.com/lukeapage/webpack-hot-middleware#2cdfe0d0111dab6432b8683112fd2d17a5e80572",

I got the same problem and your solution can fix this issue , thank u .

I hope this project's maintainer can fix it as soon as possible

WanderWang avatar Jan 27 '21 06:01 WanderWang

I was running into this issue and calling module['hot'].accept() in browser like @zhyafe mentioned fixes it for me :+1:

if (module['hot']) {
  module['hot'].accept();
}

TylerBarnes avatar Feb 10 '21 03:02 TylerBarnes

I was running into this issue and calling module['hot'].accept() in browser like @zhyafe mentioned fixes it for me +1

if (module['hot']) {
  module['hot'].accept();
}

It was already necessary with webpack 4...

Skywalker13 avatar Feb 10 '21 07:02 Skywalker13

If you guys need a workaround, you can add ?reload=true to your entrypoint in you webpack config:

entry: ["webpack-hot-middleware/client?reload=true", "./src/index.tsx"],

You also need to change ignoreUnaccepted to false in process-update.js inside the webpack-hot-middleware module

var lastHash;
var failureStatuses = { abort: 1, fail: 1 };
var applyOptions = {
  ignoreUnaccepted: false,
  ignoreDeclined: true,
  ignoreErrored: true,

williamoverton avatar Feb 27 '21 18:02 williamoverton

I believe it may be a webpack 5 bug. I also created a PR that works around it, but I have no idea what I am doing or if the fix is hacky.

I combined the 2 PR's that fix webpack 5 bugs on my forked master branch, feel free to use it in npm

git+https://github.com/lukeapage/webpack-hot-middleware#2cdfe0d0111dab6432b8683112fd2d17a5e80572

e.g. for yarn

    "resolutions": {
        "webpack-hot-middleware": "git+https://github.com/lukeapage/webpack-hot-middleware#2cdfe0d0111dab6432b8683112fd2d17a5e80572",

The same issue with Webpack 5, switch to this fork fix for now.

weilinzung avatar Mar 14 '21 16:03 weilinzung

Fork fix works, I guess we just have to wait for the fork to get merged into the main repository 😕

Armster15 avatar Apr 09 '21 02:04 Armster15

Hi @glenjamin, any ETA on this fix?

Thanks in advance.

nadun-wije avatar May 31 '21 20:05 nadun-wije

+1 for this. any news?

mikejdegroot avatar Jun 11 '21 11:06 mikejdegroot

The latest state of webpack 5 support is that no-one has yet taken the time to understand what has actually changed and why that has caused a problem.

Once that research has been done and a fix incorporated into #397 then it can be merged and released properly.

This comment suggests the path forwards for anyone who is sufficiently motivated and has the time: https://github.com/webpack-contrib/webpack-hot-middleware/pull/397#issuecomment-813411497

glenjamin avatar Jun 12 '21 13:06 glenjamin

@glenjamin i took the time way back when I made my work around or - and raised a bug with webpack - it’s a bit hidden so repeating it here https://github.com/webpack/webpack/issues/12408

lukeapage avatar Jun 12 '21 14:06 lukeapage

I was running into this issue and calling module['hot'].accept() in browser like @zhyafe mentioned fixes it for me +1

if (module['hot']) {
  module['hot'].accept();
}

This solution worked for me by adding it to the main webpack entry point.

fabrizzio-gz avatar Oct 07 '21 21:10 fabrizzio-gz

@lukeapage So to fix this issue (#390), https://github.com/webpack/webpack/issues/12408 must be addressed first right?

athrunsun avatar Nov 06 '21 02:11 athrunsun

@athrunsun yes either webpack needs a fix or this repo needs to work around it. Workaround pr - https://github.com/webpack-contrib/webpack-hot-middleware/pull/394

lukeapage avatar Nov 06 '21 06:11 lukeapage

i meet that problem in vue tsx file hmr, is it fixed now ? i use module['hot'].accept() it doesn`t work , the page reload several times and turns to white

Trojan0523 avatar Nov 10 '21 10:11 Trojan0523

If you guys need a workaround, you can add ?reload=true to your entrypoint in you webpack config:

entry: ["webpack-hot-middleware/client?reload=true", "./src/index.tsx"],

You also need to change ignoreUnaccepted to false in process-update.js inside the webpack-hot-middleware module

var lastHash;
var failureStatuses = { abort: 1, fail: 1 };
var applyOptions = {
  ignoreUnaccepted: false,
  ignoreDeclined: true,
  ignoreErrored: true,

Found the same problem, forked the repo and did this change, worked for me

hfsaito avatar Dec 09 '21 12:12 hfsaito

Hi @lukeapage

Today, when i have tried your fix, this error is showing :

error Couldn't find match for "2cdfe0d0111dab6432b8683112fd2d17a5e80572" in "refs/heads/dependabot/npm_and_yarn/acorn-5.7.4,refs/heads/dependabot/npm_and_yarn/elliptic-6.5.3,refs/heads/dependabot/npm_and_yarn/example/acorn-5.7.4,refs/heads/dependabot/npm_and_yarn/example/elliptic-6.5.3,refs/heads/dependabot/npm_and_yarn/handlebars-4.7.6,refs/heads/dependabot/npm_and_yarn/lodash-4.17.19,refs/heads/dependabot/npm_and_yarn/mixin-deep-1.3.2,refs/heads/is-jest-any-good,refs/heads/master,refs/heads/patch-1,refs/tags/v1.0.0,refs/tags/v1.0.1,refs/tags/v1.1.0,refs/tags/v1.2.0,refs/tags/v2.0.0,refs/tags/v2.0.1,refs/tags/v2.0.2,refs/tags/v2.1.0,refs/tags/v2.10.0,refs/tags/v2.11.0,refs/tags/v2.12.0,refs/tags/v2.12.1,refs/tags/v2.12.2,refs/tags/v2.13.0,refs/tags/v2.13.1,refs/tags/v2.13.2,refs/tags/v2.14.0,refs/tags/v2.15.0,refs/tags/v2.16.0,refs/tags/v2.16.1,refs/tags/v2.17.0,refs/tags/v2.17.1,refs/tags/v2.18.0,refs/tags/v2.18.1,refs/tags/v2.18.2,refs/tags/v2.19.0,refs/tags/v2.19.1,refs/tags/v2.2.0,refs/tags/v2.2.1,refs/tags/v2.20.0,refs/tags/v2.21.0,refs/tags/v2.21.1,refs/tags/v2.21.2,refs/tags/v2.22.0,refs/tags/v2.22.1,refs/tags/v2.22.2,refs/tags/v2.22.3,refs/tags/v2.23.0,refs/tags/v2.23.1,refs/tags/v2.24.0,refs/tags/v2.24.1,refs/tags/v2.24.2,refs/tags/v2.24.3,refs/tags/v2.24.4,refs/tags/v2.25.0,refs/tags/v2.3.0,refs/tags/v2.4.0,refs/tags/v2.4.1,refs/tags/v2.5.0,refs/tags/v2.5.1,refs/tags/v2.6.0,refs/tags/v2.6.1,refs/tags/v2.6.2,refs/tags/v2.6.3,refs/tags/v2.6.4,refs/tags/v2.6.5,refs/tags/v2.7.0,refs/tags/v2.7.1,refs/tags/v2.8.0,refs/tags/v2.8.1,refs/tags/v2.9.0,refs/tags/v2.9.1" for "https://github.com/lukeapage/webpack-hot-middleware".

To resolve this error i have modified this line in package.json :

"webpack-hot-middleware": "git+https://github.com/lukeapage/webpack-hot-middleware#2cdfe0d0111dab6432b8683112fd2d17a5e80572"

to :

"webpack-hot-middleware": "https://github.com/lukeapage/webpack-hot-middleware.git"

Is it a good solution ?

msev avatar Mar 16 '22 13:03 msev

hi

I believe it may be a webpack 5 bug. I also created a PR that works around it, but I have no idea what I am doing or if the fix is hacky.

I combined the 2 PR's that fix webpack 5 bugs on my forked master branch, feel free to use it in npm

git+https://github.com/lukeapage/webpack-hot-middleware#2cdfe0d0111dab6432b8683112fd2d17a5e80572

e.g. for yarn

    "resolutions": {
        "webpack-hot-middleware": "git+https://github.com/lukeapage/webpack-hot-middleware#2cdfe0d0111dab6432b8683112fd2d17a5e80572",

Hi @lukeapage This work for me. Thanks

ilhammeidi avatar Mar 21 '22 12:03 ilhammeidi

I believe this was fixed in Webpack https://github.com/webpack/webpack/issues/12408

m10 avatar Jun 09 '22 09:06 m10

my situation for "react": "^18.2.0" at the root like this:

 createRoot(document.getElementById("app-root")).render(<Root />);

if (module.hot) {
   module.hot.accept();
}

it works, but this is a warning:

image

to fix this warning : https://stackoverflow.com/questions/71792005/react-18-you-are-calling-reactdomclient-createroot-on-a-container-that-has-a

// https://stackoverflow.com/questions/71792005/react-18-you-are-calling-reactdomclient-createroot-on-a-container-that-has-a
let container = null;
document.addEventListener("DOMContentLoaded", function (event) {
  if (!container) {
    container = document.getElementById("app-root");
    const root = createRoot(container);
    root.render(<Root />);
  }
});
if (module.hot) {
   module.hot.accept();
}

the hot does not work any more, so i rolled it back .😥😥😥

townechow avatar Oct 12 '22 04:10 townechow