3

I started a new developer role a few days ago and made some environmental changes to adapt for work. Since then, my hot reload/fast refresh has just stopped working entirely. Changes don't show up even if I refresh the page manually. Only shows changes when I stop the dev server and restart it with 'npm run dev'. The triangle indicator at the bottom right should be active, showing active reload of the window (this no longer shows up consistently either, and if it does the page gets reloaded, but alas the proposed changes aren't visible)

Context:

  • It has this effect on all NextJS and react applications of mine. Even running a basic project template off the NextJS examples page shows no hot reload working.
  • I researched this issue and it seems wrong imports (e.g. importing components using lowercase or files in the pages directory being capitalized) can cause this, but I combed through the code and can't spot any issues (of course, I could be missing it but my codebase is over 300 files).
  • Service workers in the background can cause issues, but I cleared my browser of all of them to be sure and it still doesn't fix it.
  • I installed ngrok for tunneling for work purposes and docker-compose to handle the work dev. environment.
  • Made sure I'm using the latest Next version. Even deleted node_modules and ran npm install. Deleted .next and the out folder and still no luck.

Anybody have any ideas or clues to what I should try next? Is it related to the stuff I installed for work? Something related to VS code or WSL2? Seems so puzzling it kind of just happened overnight. Thanks for any insight or advice!

System information OS: Windows (WSL2 virtualization for VS code) Browser: Chrome Version of Next.js: 10.0.3 Version of Node.js: 14.8.0 Deployment: npm run dev for development work; amplify publish for AWS hosting

4b0
  • 21,981
  • 30
  • 95
  • 142
TienPhanDev
  • 31
  • 1
  • 5

6 Answers6

7

The problem is with WSL2. I use WSL2 inside VS Code; which is a big performance upgrade in the Linux environment. The problem is WSL2 is actually in a 'virtualization' and thus cannot send information from VS Code AND the browser (localhost:3000) at the same time.

It's a big issue they are working on and there is no fix yet for it. That's why fast refresh doesn't work because localhost is not receiving the changes being made. Either proxy through or revert back to WSL1 https://github.com/microsoft/WSL/issues/4769

Solution provide by OP on question section

4b0
  • 21,981
  • 30
  • 95
  • 142
6

Add a .env file or a .env.local file to your root and put this line on it:

WATCHPACK_POLLING=true 

Now, restart your server.

GuTheR
  • 61
  • 1
  • 3
1

Thanks I encounter the same issue with WSL2. I just switch to windows terminal and it works.

kitcat
  • 11
  • 1
1

If you run Poweshell as administrator and run

wsl.exe -l -v

This will give you th eversion of wsl your distros run on.

I am personally using Ubuntu, and this is the output

Ubuntu Running 2 docker-desktop Stopped 2 docker-desktop-data Stopped 2

To switch to wsl 1,

Run wsl.exe --set-version Ubuntu 1

and if you wanna switch back, run, wsl.exe --set-version Ubuntu 2.

This worked for me.

plutoniumApples
  • 59
  • 1
  • 1
  • 3
1

In my react projects, I just add in my .env file at the root project folder the values

FAST_REFRESH=false  
CHOKIDAR_USEPOLLING=true

and it works! enjoy!

Pawara Siriwardhane
  • 1,873
  • 10
  • 26
  • 38
1

The problem is with WSL2. I use WSL2 inside VS Code. But React JS and Next JS projects don't auto-reload. So, add a .env or .env.local (recommended) file to your root and put these lines on it:

WATCHPACK_POLLING=true
CHOKIDAR_USEPOLLING=true

Now, restart your server.

RS Shonjoy
  • 245
  • 3
  • 2