티스토리 뷰

배경 및 문제

Node.js를 실행하다 보면 아래와 같은 오류를 마주칠 때가 종종 있다.

Error: listen EADDRINUSE: address already in use :::<포트번호>

 

클라이언트에서 서버에 요청을 보낼 때 특정 번호의 포트로 전달해야 하는데, 
이미 다른 프로세스가 해당 포트번호로 실행 (사용) 중이기 때문에 위의 오류가 발생하는 것이다.

cf. <포트번호>
- 인터넷을 사용할 때 정해진 규칙, 즉 인터넷 프로토콜에 따라 특정 프로세스를 식별하는 번호를 매긴 전송 방식이다. 
- WWW (World Wide Web) HTTP는 80번, SSH는 22번, MySQL 은 3306번이 기본 포트번호이며,
  프론트엔드는 주로 3000번을, 백엔드는 5000번을 종종 활용한다.

 


 

해결

요약: 기존의 해당 포트번호로 실행 중인 프로세스를 종료시키고 다시 실행해야 한다.

 

[window] @Commpand Prompt

1) 특정 포트번호를 사용하는 네트워크 상태 확인

netstat -ano | findstr [포트번호]

를 입력하면 해당 포트번호를 사용하는 모든 네트워크 상태를 볼 수 있다.

 

2) 특정 포트번호에 실행중인 프로세스 종료

taskkill /pid [PID번호]

PID번호(맨 오른쪽의 컬럼에 적인 1~5자리 숫자) 를 사용해 아래처럼 입력하면 프로세스를 종료시킬 수 있다.

 

 

예)

문제: 3000번 포트로 실행하려고 할 때, listen EADDRINUSE: address already in use Error가 발생

netstat -ano | findstr 3000  #3000번 포트의 네트워크 목록 찾기

# .. 생략 ...
# TCP    0.0.0.0:3000           0.0.0.0:0              LISTENING       19172

taskkill /pid 19172  # PID 19172 프로세트 종료

 

 

 

참고

포트 위키백과

 

Node.js | EADDRINUSE 에러

간단하게 말하면, 해당 포트가 이미 사용 중이라는 뜻이다.Node.js에서 해당 노드를 종료하지 않고 또 실행하는 경우에서 자주 발생하는 것 같다.

velog.io

 

 

댓글