Port Already in Use
The application cannot start because the required port is already occupied by another process.
Explanation
Port Already in Use occurs when an application tries to bind to a TCP/UDP port that is already in use by another process. The error code EADDRINUSE (Address Already In Use) indicates the port is occupied. Common causes include a previous instance of the same application not properly shut down, another application using the same port, zombie processes holding the port, or starting multiple instances of a server without configuring port reuse. This is common in development when restarting applications.
Common Causes
- Previous instance not properly shut down
- Another application using same port
- Zombie processes holding the port
- Multiple server instances started
- Docker container still running
Solution
Find the process using the port: lsof -i :3000 (Linux/Mac) or netstat -ano | findstr :3000 (Windows). Kill the process: kill -9 PID or taskkill /PID PID /F (Windows). Configure your application to use a different port. Use SO_REUSEADDR socket option in your application. For Node.js, use process.on('SIGTERM') to properly close the server. For Docker, stop the container using the port: docker stop container_name. Use pm2 for Node.js process management which handles cleanup. Check for orphaned processes after crashes.
Code Example
# Find what's using port 3000
lsof -i :3000
# COMMAND PID USER FD TYPE DEVICE NODE NAME
# node 1234 user 23u IPv4 ... TCP *:3000 (LISTEN)
# Kill the process
kill -9 1234
# Or on Windows
netstat -ano | findstr :3000
taskkill /PID 1234 /F
# Use a different port
PORT=3001 npm start
# Docker: stop container using port
docker stop $(docker ps -q --filter publish=3000)
# Node.js: handle graceful shutdown
const server = app.listen(3000);
process.on('SIGTERM', () => {
server.close(() => process.exit(0));
});
# Use pm2 for process management
pm2 start app.js --name myapp
pm2 restart myapp
# Check for zombie processes
ps aux | grep zombie
ps -ef | grep defunct
Error Information
Language
javascript
Framework
nodejs
Difficulty
Beginner
Views
199
Related Errors
DevOps
Ansible Unreachable Host
Ansible cannot connect to the target host via SSH or WinRM.
Frontend
Webpack Module Not Found
Webpack cannot resolve a module or file imported in the code.
ENOSPC
DevOps
Out of Disk Space
The system or application ran out of disk space.
DevOps
SSL Certificate Expired
The SSL/TLS certificate for the website has expired and is no longer valid.