52

I keep on getting "? Something is already running on port 3000" message in my terminal when I start up my react server when there is absolutely nothing running on my port 3000

What I have tried to solve with:

  1. Restart the macOS.
  2. checking my "http://localhost:3000" on chrome browser. (Nothing: This site can’t be reached)
  3. Go to chrome://serviceworker-internals and chrome://appcache-internals, search for localhost:3000 (Nothing found)
  4. I also tried almost every command lines I found on Google regarding this issue
  5. I also created another express.js app, and it was successfully launch on port 3000 while React said there is something running on 3000. React on my computer just keeping thinking there is something running on port 3000.

terminal

Chrome

5
  • 3
    run netstat -anp tcp | grep 3000 if you have a result for it then yo have some process running in that port Feb 28, 2018 at 5:50
  • 1
    @deepakthomas I ran the code you gave me, nothing pop out. the terminal just return right back. Feb 28, 2018 at 9:32
  • Why don't you just change the port you are running your react-app on? Aug 7, 2018 at 6:29
  • 1
    @UtkarshPramodGupta doesn't really solve the issue, just avoids it.
    – Yashank
    Dec 23, 2020 at 9:35
  • 1
    Linux solution: Avoid using ctrl+z to terminate the react app. This occures for me when I terminate the app from terminal using ctrl+z. This doesn't terminate the process due to some reason. Instead if I terminate using ctrl+c or ctrl+shift+c all the processes of react are properly stopped and thus I don't get the error. To kill the process for first time I used kill -9 pid
    – Mahi
    Nov 11, 2022 at 17:58

19 Answers 19

78

If you are a windows user you can try using

npx kill-port 3000

in your console. I was having the same problem and it worked for me.

Not sure about MAC.

4
34

Open cmd and write this

netstat -a -o -n

You will get list of active connections then find 3000 by hitting

Cntrl + f

enter image description here

Copy the PID of that port and hit this command

taskkill /F /PID PID_of_port

enter image description here

Edit This guide is for windows.

2
  • 2
    I'm a Mac user. Feb 28, 2018 at 9:30
  • 5
    I did this but there is no process using port 3000. However I still get the error Jul 5, 2021 at 8:18
19

As @khurram khan suggested terminating the process may be the best option for you, This work for me on linux:

$ lsof -i tcp:3000
$ kill -9 PID

the first command should give you the PID number to enter in the second command as PID.

15

Kill Node.Js process from Task Manager.

Step 1: Open Task Manager by clicking ctrl+shift+delete

Step 2: Open Prcesses tab

Step 3: Search for Node.JS process and right click on that then click on End Task

Step 4: Now you can start again.

8

This worked for me on windows pc. This one is for those are not seeing the port when you run this command netstat -a -o -n on your command prompt.

Open your command prompt in administrator mode and run this command

net stop winnat

you'll get this response:

The Windows NAT Driver service was stopped successfully.

Then you run this next:

net start winnat

then you will get this response:

The Windows NAT Driver service was started successfully.

once you do that. Start the react server and it would work. Same too if your backend server doesn't run on 3000

2
7

I had this problem on Mac and I solved by running:

npx kill-port 3000
5

For me, this works every time (macOS): sudo kill -9 $(sudo lsof -t -i:3000)

1
  • 1
    This worked best for my Mac, thanks! Apr 6, 2023 at 17:02
4

I had stuck with this one for few hours, and the end I had found the solution There was incorrect mapping to the local host in the hosts file and didn't had any relation to the port taken something like

10.2.224.130    localhost 

Just Change it back to

127.0.0.1        localhost 

Host file locations https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/

2
  • 1
    This was almost the solution for me. I had just commented that line out for some reason. Adding it back fixed the problem. Was almost going mad
    – Mike
    Aug 12, 2020 at 9:19
  • 1
    @Mike same for me
    – Koala7
    Jun 15, 2022 at 14:03
2

In case anyone comes across this and the above solutions didn't help, make sure your /etc/hosts has:

127.0.0.1 localhost

For some reason this was wiped from my hosts file and CRA's dependency for checking ports (detect-port-alt) checks localhost:[PORT] to see if it's available. If it errors out, you'll always get the "Something is already running..." error when checking a specific port but not when using a random port (since that's picked by the dependency).

1

kill node.js from the background processes. that would soleve the probelem. alterntively, you could restart your system

1

It's very simple. You can fix it in 2 easy steps.

  1. Check your environment variables if there is a key/entry with name "PORT".
  2. If found delete that entry or rename it to something else.

It turns out that some other program is using that variable. Usually when you start react-scripts it will look for an environment variable with that title PORT.

1

If you are on linux you can try

pkill -f node

to terminate the processs

1

The error occurs when a task is left running on the port properly killing it. this error can occur on both ports. Your react app and your node server.

To solve this you can run the following commands.

netstat -anp tcp | grep 3000

This command in the terminal will give you the list of activities on port 3000

npx kill-port 3000

This command will kill all the running servers on port 3000.

Now if you have the same problem for your Node server. You can follow the same steps.

netstat -anp tcp | grep 5000

Then

npx kill-port 5000

You don't need the first command. it's just to list out the running activities on the port.

just change the port number for any other port number.

This is the output you get after running the commands. I am using Git bash on windows.

0

Date: Sat 07, October 2020
Windows: Microsoft Windows 10 Pro Build 19041
Node: 12.16.1
NPM: 6.14.8

Something similar was happening to me on my Windows machine. Tried a lot of things suggested here on StackOverflow and other places.

In my case, I was following a video course that was suggesting adding --script-version 1.1.5 (as illustrated below) when creating a new React app.

create-react-app app-name --scripts-version 1.1.5

Here's the package.json scripts versions:
React: 17.0.1
React DOM: 17.0.1
React Scripts: 1.1.5

After running the command npm start and typing y to try to use a different port, the terminal will stay stucked until it was canceled.

enter image description here

Then I created a new React app without --scripts-version 1.1.5 and after trying to running it, it was still running into Something is already running on port 3000 but after typing y, the app will run with no problem on a different port.

enter image description here

Here's the package.json scripts versions (when it was running successfully):
React: 17.0.1
React-Dom: 17.0.1
React-Scripts: 4.0.0

1
  • 1
    Changing the port itself doesn't really solve the issue tho... This is caused by a "probably" unused process that needs to be killed anyway. Changing the port will make the app run on a different port, but the default 3000 port will still be stuck.
    – Yashank
    Dec 23, 2020 at 9:56
0

Starting with the reason you do not see anything on localhost:3000, is because there must be a proper webapp or a website/server running on that port, but the port:3000 is currently running some process, just not of a server/site/app.

This out of the way, depending on your type of OS, it is quite easy to check if there is in-fact a process on port:3000 or not. For MacOS, opening a terminal and running sudo lsof -i ':3000' will list the current process on port 3000. Note that we need to run command as sudo or root

Once you see what process is running, note the PID and run kill -9 {PID}, which should kill the process with PID (i.e distruptive process on port:3000). Now doing a npm start should get your app built, compiled and served on localhost:3000

Mostly what might've happened is that you had a npm start running which you either interrupted, or closed in the foreground. Doing a fg in your terminal will open any background tasks, so if this opens a npm start instance, it was this process stopping your flow. You can then properly end the session making sure all processes on port:3000 are killed.

Happy coding

0

for window use this in package.json "start": "set PORT=3006 && react-scripts start"

for Linux and MacOS "start": "PORT=3006 react-scripts start"

0

For MAC :

lsof -i :3000 enter image description here

kill -9 7233

Here that port will be available after that. We can re-check again with lsof -i :3000 this command.

-1

Simple and Easy solution

close your current terminal and open a new one.

If you are running it in VS Code just create a new terminal and delete the old one.

2
  • Hi @waqasali, This does not answers the question. Dec 9, 2021 at 6:36
  • 1
    Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Dec 9, 2021 at 11:54
-4

 

On React - you can run an already created React single-page application (SPA) by

npm start command.

That may start your locally hosting development server and runs your app at:

http://localhost:3000/ which is equivalent to: 127.0.0.1:3000 address

127.0.0.1 is the default localhost IP number while the default port number set by

create-react-app package is 3000.

When getting: “Something is already running on port 3000" failure error message you may think that the port captured by another process running on your machine but you’ll find that it is captured permanently as if it runs on 0.0.0.0:3000 address

Solution:

In your project libraries created by create-react-app script navigate to:

node_modules/react-scripts/scripts/start.js

While running npm start command - the start.js script is being called and executed

There at start.js file in you editor find the above line:

const HOST = process.env.HOST || '0.0.0.0';

 and change it to:

const HOST = process.env.HOST || '127.0.0.1';

 

save and run your web app again at: http://localhost:3000/ or http://127.0.0.1:3000

 

 

 

1
  • 3
    editing stuff in node_modules is never a good solution - it is .gitignored so it's not persisted
    – Hex
    Jun 3, 2020 at 8:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.