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
14
Related Errors
Frontend
Invalid CSS Property
The code sets a CSS property that doesn't exist or uses incorrect syntax.
ENOENT
Node.js
ENOENT: No Such File or Directory
The operating system cannot find the specified file or directory.
Frontend
ResizeObserver Loop Limit Exceeded
A ResizeObserver callback triggered layout changes that caused another resize, creating an infinite loop.
Frontend
CORS Error
The browser blocks cross-origin requests due to same-origin policy restrictions.