TechFeedTechFeed
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 -9
2
포트 점유 프로세스 종료 (Windows)

netstat 로 PID 를 찾아 종료합니다.

netstat -ano | findstr :3000
taskkill /PID <PID> /F
3
다른 포트로 실행

점유 프로세스가 필요하면 앱을 다른 포트로 띄웁니다. Next.js 는 -p 플래그를 지원합니다.

PORT=3001 npm run dev   # 또는 next dev -p 3001
💡 예방: dev 서버는 Ctrl+C 로 정상 종료하세요. 터미널을 강제로 닫으면 프로세스가 남을 수 있습니다.
nodeEADDRINUSE포트lsof3000