Development server of create-react-app does not auto refresh

JavascriptReactjsCreate React-App

Javascript Problem Overview


I am following a tutorial on React using create-react-app. The application is created by create-react-app v1.3.0

create-react-app my-app

The dev server is run by

npm start

After changing the code several times, the browser is not updated live / hot reload with the changes. Refreshing the browser does not help. Only stopping the dev server and starting it over again capture the new changes to the code.

Javascript Solutions


Solution 1 - Javascript

I was reading a lot of unnecesary stuff.

I am using React 17.

And my probrem was that the page just add new components but the browser was not refreshing the page.

If your terminal is Compiling... and then you don't see changes on the browser, you should try adding a .env file in the root path of the project and add FAST_REFRESH=false.

Hot refresh was replaced for Fast refresh by default.

Solution 2 - Javascript

Have you seen the “Troubleshooting” section of the User Guide?
It describes a few common causes of this problem:

>When you save a file while npm start is running, the browser should refresh with the updated code.
> >If this doesn’t happen, try one of the following workarounds: > >* If your project is in a Dropbox folder, try moving it out. >* If the watcher doesn’t see a file called index.js and you’re referencing it by the folder name, you need to restart the watcher due to a Webpack bug. >* Some editors like Vim and IntelliJ have a “safe write” feature that currently breaks the watcher. You will need to disable it. Follow the instructions in “Disabling swap files creation in vim”. >* If your project path contains parentheses, try moving the project to a path without them. This is caused by a Webpack watcher bug. >* On Linux and macOS, you might need to tweak system settings to allow more watchers. >* If the project runs inside a virtual machine such as (a Vagrant provisioned) VirtualBox, create an .env file in your project directory if it doesn’t exist, and add CHOKIDAR_USEPOLLING=true to it. This ensures that the next time you run npm start, the watcher uses the polling mode, as necessary inside a VM. > >If none of these solutions help please leave a comment in this thread.

I hope this helps!

Solution 3 - Javascript

Adding a .env file in the base path of the project and inside add FAST_REFRESH=false.

This disables fast refresh and returns to hot reload.

If you don't want to add a .env file to your base path you can choose these options:

  • "start": "FAST_REFRESH=false react-scripts start", in the package.json.
  • FAST_REFRESH=false npm run start, on the command line.
  • FAST_REFRESH=false, exporting it as an environment variable.

> React 17 > > React-scrits 4

Solution 4 - Javascript

Have you tried npm start with super user permissions? I had the issue with my project and I solved it like this.

$sudo bash
#npm  start

Solution 5 - Javascript

In WSL2 work for me, "If the project runs inside a virtual machine such as (a Vagrant provisioned) VirtualBox, create an .env file in your project directory if it doesn’t exist, and add CHOKIDAR_USEPOLLING=true to it. This ensures that the next time you run npm start, the watcher uses the polling mode, as necessary inside a VM."

Or just run: $ CHOKIDAR_USEPOLLING=true npm start

Solution 6 - Javascript

Spent few hours fixing this:


1 . Create a file .env (beside package.json file) add below contents:

File: .env

FAST_REFRESH=false

2 . Now, stop & start the server

(Ctrl + C to start, if in CMD, on Windows OS)
npm start

4 . Now, change some text in the App.js

File: App.js

from "Learn React"
to "Learn React And it's working"

NOTE:
1 . Server restart is important.
2 . Refresh browser tab if you dont see changes.

Solution 7 - Javascript

In my case, it was there are not enough number of file watchers. I have to change the configurations manually.

See active file watchers limit using below command on terminal.

cat /proc/sys/fs/inotify/max_user_watches

Add below line to the /etc/sysctl.conf file.

fs.inotify.max_user_watches = 524288

Apply changes using the command below.

sudo sysctl -p

Solution 8 - Javascript

I had this problem while running npm within WSL. I had the project folder in my windows Desktop folder from which npm cannot recompile automatically in WSL.
After moving the project folder to user home directory of WSL solved the issue.

Solution 9 - Javascript

On win10 in WSL2, I had to create the .env in the root folder, and include both

FAST_REFRESH = false
CHOKIDAR_USEPOLLING=true

My setup doesn't include any virtual machine (unless WSL2 is considered a VM?). Nevertheless the .env with the above two entries got it up and running.

Solution 10 - Javascript

just create .env file in the root of your app and add the following to it

.env

FAST_REFRESH=false

Solution 11 - Javascript

Find your index.js and change something in this file, for example add a white space, then save. It should show "compiling..." in your console.

Then you can modify other files and react will refresh on save.

It seems that npm is looking for changes in the index.js at the very first time, if you refactor your folder structure the index.js could be missed. Force an update in index.js file get the problem solved.

At least this has worked to me

Solution 12 - Javascript

If you are using visual studio code, you can create a new file and save it as .env. Inside, .env write FAST_REFRESH=false and save. Now run npm start and this worked for me.

Solution 13 - Javascript

For users of WSL2, be mindful that if your project is in your Windows System(ie C: or D:) then it won't work.

Solution 1:

access these files through the WSL share, \wsl$\DISTRO_NAME from Windows.

Solutions 2:

Inside your package.json

find

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  }

and replace it with

"scripts": {
    "start": "CHOKIDAR_USEPOLLING=true react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  }

Credits to https://github.com/facebook/create-react-app/issues/10253

Solution 14 - Javascript

Edit: This might not be a recommended solution. The solution worked for Docker.

If using docker with a volume mount, you need to add an .env file in the src folder with the command CHOKIDAR_USEPOLLING=true in it. However, for me this threw an error

> /app/src/App.js: Cannot find module '@babel/parser'

. To resolve this new error, changing the "react-scripts": "3.4.3" to "react-scripts": "3.4.0" in the package.json file worked. So you depending on your situation you may need to add the .env file and also change the react-scripts version.

Note: To put a little more context, I was working with docker and the react app files were mounted as a volume in the docker image (so that making changes in the app are directly reflected in the app without rebuilding a docker image). The above solution is based on other solutions posted in the community for docker where people had suggested changing the react scripts version. I don't think this should be a recommended solution. However, since I was doing a tutorial series I wanted to save time and focus on other things.

Solution 15 - Javascript

If you are running your app behind a reverse proxy / nginx (e.g. to enable https locally) you also need to enable websockets so it can detect the refresh:

location /sockjs-node {
    proxy_pass http://dockerhost:5000/sockjs-node;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

Solution 16 - Javascript

  1. In package.json, use "react-scripts": "3.4.4"

  2. Delete package-lock.json

  3. Run "rm -rf node_modules && npm install"

npm start

Solution 17 - Javascript

I was confused about how to create a .env file and even when i did it still didn't work. I was able to fix the issue by running this command on my terminal.

npm run start -FAST_REFRESH=false

Hopes it helps someone.

Solution 18 - Javascript

In case people come here looking for a better solution, my issue was resolved by moving my files inside the WSL2 filesystem. Hot reloading worked straight away with no need to add an .env file.

Solution 19 - Javascript

I ended up here seeking answers to a similar issue. Although mine was specific to one page that wasn't hot reloading. I do want to point out this is using Nextjs and it was a page under /pages named subscribe.js (/pages/subscribe.js)

It was very frustrating and admittedly took a while to figure out.

A lot of technical answers here, but interestingly, my issue was that my functional component did not start with a capital letter.

import React from 'react'

export default function subscribe() {
  return (
    <div>
      
    </div>
  )
}

Where the function name needed to start with a capital like so

import React from 'react'

export default function Subscribe() {
  return (
    <div>
      
    </div>
  )
}

As they say, you learn something new every day. In this game it's more like 10 things, the trouble is remembering what you learn ;)

Solution 20 - Javascript

push your commited changes to the branch and then delete the local repo folder then clone the repo again and run npm install or yarn install whichever you prefer. this workaround solved my issue

Solution 21 - Javascript

Try using this command

echo fs.inotify.max_user_watches=524288 
sudo tee -a /etc/sysctl.conf && sudo sysctl -p

If still, the error is there then you need to remove your node modules and again

npm install

and then

npm start

Solution 22 - Javascript

You might wanna add -w to {"start": "react-scripts start -w"}. I had the same issue, fixed by adding --watch.

Solution 23 - Javascript

After creating a new project using create-react-app toolchain

Make sure to run

  1. npm install, then
  2. npm start

Solution 24 - Javascript

"dependencies": { "react": "^17.0.1", "react-scripts": "4.0.1", } if you are using these version then create .env file on the root directory of your project and type FAST_REFRESH=false and save it. Then yarn start OR npm start.

Solution 25 - Javascript

for linux first check the number of the files allowed using:

> cat /proc/sys/fs/inotify/max_user_watches

in my, it was 8192 so I just change it to 524288 and it worked perfectly.

commands use to change is:

> cd /proc/sys/fs/inotify > sudo nano max_user_watches

and then change no to 524288 save it and then use this command to apply the changes

> sudo sysctl -p

reference from https://blog.jetbrains.com/idea/2010/04/native-file-system-watcher-for-linux/

Solution 26 - Javascript

Watch out where you add your .env file to. When you call create-react-app app-name, React will add following folder structure:

./root
   ./app-name
      ./node_modules
      ./public
      ./src
      package.json
      README.md

My problem was, I added .env file (with FAST_REFRESH=false inside) under the ./root directory. Placing the file in my ./app-name folder solved the issue.

Solution 27 - Javascript

I tried all the above suggestions, but still my react app does not refresh on code changes. Then I copied the previously working react project folder (only frontend) pasted it into the new project I am starting. Removed all the code related to old project and started using it. This solved my problem.

If this is feasible for you, you too can adopt the same method. If anyone discover a new simple solution, please post it here.

Solution 28 - Javascript

If you are on linux, check if it works with root access. If it does, stop your server and disable enforcement (for more details, man selinux).

sudo setenforce 0

Start your server again (without root), it might work.

Solution 29 - Javascript

I came up against this same problem when starting the server through npm run start. When I changed it to npm start, it worked as expected.

Solution 30 - Javascript

Instead of

npm start

Run with administration permission in Linux

sudo npm start

Solution 31 - Javascript

For Linux system you can try

sudo npm start

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionelpddevView Question on Stackoverflow
Solution 1 - JavascriptKev AldasoroView Answer on Stackoverflow
Solution 2 - JavascriptDan AbramovView Answer on Stackoverflow
Solution 3 - JavascriptLuis AceroView Answer on Stackoverflow
Solution 4 - JavascriptJiNView Answer on Stackoverflow
Solution 5 - JavascriptEstiventh Leonardo Neira AldanView Answer on Stackoverflow
Solution 6 - JavascriptManohar Reddy PoreddyView Answer on Stackoverflow
Solution 7 - JavascriptSudarshana DayanandaView Answer on Stackoverflow
Solution 8 - JavascriptSubangkar KrSView Answer on Stackoverflow
Solution 9 - JavascriptPOBrienView Answer on Stackoverflow
Solution 10 - JavascriptYoussef ZidanView Answer on Stackoverflow
Solution 11 - JavascriptRafa NogalesView Answer on Stackoverflow
Solution 12 - JavascriptMohit SaudView Answer on Stackoverflow
Solution 13 - JavascriptdeveloperView Answer on Stackoverflow
Solution 14 - JavascriptMGLondonView Answer on Stackoverflow
Solution 15 - JavascriptlaktakView Answer on Stackoverflow
Solution 16 - JavascriptKaranView Answer on Stackoverflow
Solution 17 - JavascriptoyerohabibView Answer on Stackoverflow
Solution 18 - JavascriptnirbhauView Answer on Stackoverflow
Solution 19 - JavascriptdylzeeView Answer on Stackoverflow
Solution 20 - JavascriptSamarth KeskarView Answer on Stackoverflow
Solution 21 - Javascriptchampion-runnerView Answer on Stackoverflow
Solution 22 - JavascriptVusal HasanovView Answer on Stackoverflow
Solution 23 - JavascriptShirantha MadusankaView Answer on Stackoverflow
Solution 24 - JavascriptsuvopView Answer on Stackoverflow
Solution 25 - Javascriptgaurav View Answer on Stackoverflow
Solution 26 - JavascriptAlexander SuleymanovView Answer on Stackoverflow
Solution 27 - JavascriptRajView Answer on Stackoverflow
Solution 28 - JavascriptBenbout62View Answer on Stackoverflow
Solution 29 - JavascriptSinister BeardView Answer on Stackoverflow
Solution 30 - Javascriptsachin waghmareView Answer on Stackoverflow
Solution 31 - JavascriptvinsonView Answer on Stackoverflow