Node.js런타임
EADDRINUSE 포트 이미 사용 중 — listen EADDRINUSE :::3000
Error: listen EADDRINUSE: address already in use :::3000
한 줄 해결: 같은 포트를 쓰는 프로세스가 이미 떠 있어 서버가 바인딩에 실패한 것으로, 그 프로세스를 종료하거나 다른 포트를 쓰면 됩니다.
이런 증상일 때
npm run dev / node server.js 실행 시 서버가 뜨지 못하고 EADDRINUSE 와 포트 번호(예: 3000)가 출력됩니다. 이전 dev 서버가 비정상 종료돼 포트를 점유한 채 남은 경우가 대부분입니다.
원인
- 이전에 띄운 dev 서버/프로세스가 종료되지 않고 포트를 점유
- 같은 포트를 쓰는 다른 앱(다른 프로젝트, Docker 컨테이너 등)이 실행 중
- nodemon/watch 가 중복 실행돼 두 인스턴스가 같은 포트를 경합
해결 방법
1
포트 점유 프로세스 찾아 종료 (macOS/Linux)
해당 포트를 쓰는 PID 를 찾아 종료합니다.
lsof -ti:3000 | xargs kill -92
포트 점유 프로세스 종료 (Windows)
netstat 로 PID 를 찾아 종료합니다.
netstat -ano | findstr :3000
taskkill /PID <PID> /F3
다른 포트로 실행
점유 프로세스가 필요하면 앱을 다른 포트로 띄웁니다. Next.js 는 -p 플래그를 지원합니다.
PORT=3001 npm run dev # 또는 next dev -p 3001💡 예방: dev 서버는 Ctrl+C 로 정상 종료하세요. 터미널을 강제로 닫으면 프로세스가 남을 수 있습니다.
nodeEADDRINUSE포트lsof3000