Resolving ‘EADDRINUSE: address already in use’ Error in Node.js

In this article, we are going to discuss about “EADDRINUSE: address already in use” error in Node/Express. The “EADDRINUSE” error is a common issue encountered when developing Node.js applications with the Express framework. The line “address already in use” means the program wanted to use a particular “address” on your computer, but some other program is already using it. This happens when you’re trying to run a web server using Node.js or Express and the server wants to use a specific “address” (like a house number, but here it is called “port”), but something else on your computer is already using that “address.”. Let’s discuss more about it in this article.

Why ‘EADDRINUSE: address already in use’ Error Occurs?

In this section, we are going to discuss about the detailed reason for this error. This error occurs when you try to start a server in Node.js, and it can happen for several reasons:

1. Port in Use

Imagine your computer has houses (like little data houses) where different services live. Each house has a unique number (port). If another service is already living in the house with the same number your service wants, you can’t move in there.

2. Unclosed Server

Sometimes, the error can occur if a previous instance of your Node.js server was not properly closed or terminated. It’s like trying to lock a door but forgetting to take the key out. If your service didn’t lock the door (close properly) last time, it can’t open it again because it’s still locked.

3. Concurrency Issues

In a multi-threaded environment, if multiple server instances are trying to bind to the same port simultaneously, it can result in this error. Imagine two cars trying to park in the same parking spot at the same time. It doesn’t work. Multiple services trying to use the same house at once can lead to a problem.

4. Server Restart

If you try to restart your server too quickly after shutting it down, the old connection might still be in use by the operating system, causing a conflict. Think of it like trying to turn on your computer too quickly after turning it off. Sometimes, the computer needs a moment to get ready. Similarly, starting your service too quickly after stopping it can cause trouble.

5. Firewall or Security Software

Some security software or firewalls may block or interfere with server ports, leading to port conflicts. Just like a security guard blocking a road, some software on your computer might not let your service use certain houses (ports) for safety reasons. This can also lead to problems.

Resolving ‘EADDRINUSE: address already in use’ Error

In this section, we are going to discuss the solution to this problem. To resolve this error, you can follow these steps:

1. Identify the Process Using the Port

You first need to identify which process is using the port that your Node.js server is trying to use. You can do this using command-line tools.

On Unix-based systems (Linux, macOS), you can use the lsof command to find the process using a specific port.

Syntax:

lsof -i :<PORT>

Replace <PORT> with the port number your Node.js server is trying to use.

On Windows, you can use the netstat command to find the process using a port.

Syntax:

netstat -ano | findstr :<PORT>

Replace <PORT> with the port number:

Once you identify the process, you can decide whether to stop it or change your Node.js server’s port to an available one.

2. Stop the Conflicting Process

If you identify a conflicting process, you can choose to stop it. On Unix-based systems, you can use the kill command to terminate the process. On Windows, you may need to use Task Manager or another appropriate method to end the process.

3. Change the Port in Node.js Application

If stopping the conflicting process is not an option or if you prefer to change the port your Node.js server is using, you can modify your Node.js application to use a different port.

const express = require('express');
const app = express();
const port = 3000; // Change this to your desired port number

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

Make sure to update any client-side code (frontend URLs) that communicates with your server to use the new port.

4. Restart Node.js Application

After making the necessary changes, restart your Node.js server to use the updated port.

These above steps will help you to resolve the issue of “EADDRINUSE: address already in use”.

Conclusion

Now we have reached to the end of this article. Hope it has elaborated on the problem “EADDRINUSE: address already in use”. This error is a common challenge encountered in Node.js development. It signifies that the desired communication address (port) for your application is already occupied by another process or service. To resolve this issue, you need to either stop the conflicting process, choose a different available address (port), or ensure your server is correctly closed and restarted.  For more such articles on Node and Express follow https://codeforgeek.com/.

Reference

https://stackoverflow.com/questions/4075287/node-express-eaddrinuse-address-already-in-use-kill-server

Arnab Biswas
Arnab Biswas
Articles: 10