Node.js | EADDRINUSE 에러

trevor1107·2021년 2월 19일
3

ERROR EADDRINUSE

간단하게 말하면, 해당 포트가 이미 사용 중이라는 뜻이다.

Node.js에서 해당 노드를 종료하지 않고 또 실행하는 경우에서 자주 발생하는 것 같다.

나 같은 경우는 nodemon모듈을 사용하면서 실시간 갱신하는 시점에서 발생했다.
Error: listen EADDRINUSE: address already in use :::3000

그래서 일단 강제로 해당 포트의 종료하는 법을 알아보자

포트 강제로 삭제하는 법

Window

  • netstat : 네트워크 상태 정보를 보여주는 명령어
    사용법은 netstat [옵션][ | grep 포트 번호 or 서비스 명 ]
    netstat --help 또는 netstat /?명령어를 통해 도움말을 확인할 수 있다.
  • taskkill : 프로세스 종료 요청 명령어, 위와 같이 --help 또는 /?를 입력하여 도움말을 확인가능
    사용법은 [/S 시스템 [/U 사용자 이름 [/P [암호]]]]
    { [/FI 필터][/PID 프로세스 id | /IM 이미지 이름] } [/T][/F]

3000포트라고 가정하고 명령 프롬프트(cmd)에 아래와 같이 입력한다

netstat -ano | find "3000"
3000 포트에 대한 정보가 나오는데 맨 오른쪽에 있는 숫자가 PID번호이다.
해당 PID번호에 해당하는 포트를 종료시켜야 하니 잘 기억해두자.
나의 경우TCP 0.0.0.0:3000 0.0.0.0:0 LISTENING 9876로 PID번호는 9876이다.

그 다음 PID번호에 해당되는 프로세스를 종료시킨다.
taskkill /pid 9876을 입력하면 해당 포트가 종료된다. 끝!

혹여나 /f옵션으로 강제 종료가 필요한 경우
taskkill /f /pid 9876이처럼 입력해주면 된다! (물론 pid번호는 찾아서 바꾸시길)

리눅스, 맥 등

  • lsof : list open files의 약자로 시스템에서 열린 파일 목록을 알려주고 사용하는 프로세스, 디바이스 정보, 파일의 종류등 상세한 정보를 출력해 주는 명령어
    lsof --help 명령어를 통해 도움말을 확인할 수 있다.
  • kill : 프로세스 시그널 요청 명령어, 위와 같이 --help를 입력하여 도움말 확인 가능

3000 포트라고 가정하고 터미널에 아래와 같이 입력한다.

sudo lsof -i : 3000
3000 포트에 대한 정보를 확인한다. PID번호 기억하기!

그다음 아래와 같이 입력해서 PID번호에 해당되는 프로세스를 종료시킨다.
kill -9 9876
눈치 챗겠지만 -9의 경우 종료신호(KILLSIGN)이다!


참고자료 및 사이트 (감사합니다)

https://wotres.tistory.com/entry/node-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0%EB%B2%95-Error-listen-EADDRINUSE-8000

profile
프론트엔드 개발자

1개의 댓글

comment-user-thumbnail
2021년 4월 23일

감사합니다. 도움 많이 됐어요!

답글 달기