"헉 나 언제 5000포트 쓰고 있었지...?"
다른 로컬에서 작업하던 프로젝트를 pull받았는데, 갑자기 요런 에러가 떠서 매우 당황..
Error: listen EADDRINUSE: address already in use :::5000
at Server.setupListenHandle [as _listen2] (node:net:1330:16)
at listenInCluster (node:net:1378:12)
at Server.listen (node:net:1465:7)
at Function.listen (/Users/sssua-0928/Desktop/Project/HACKER-SERVER/node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (/Users/sssua-0928/Desktop/Project/HACKER-SERVER/src/index.ts:28:4)
at Module._compile (node:internal/modules/cjs/loader:1103:14)
at Module.m._compile (/Users/sssua-0928/Desktop/Project/HACKER-SERVER/node_modules/ts-node/src/index.ts:1371:23)
at Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
at Object.require.extensions.<computed> [as .ts] (/Users/sssua-0928/Desktop/Project/HACKER-SERVER/node_modules/ts-node/src/index.ts:1374:12)
at Module.load (node:internal/modules/cjs/loader:981:32) {
code: 'EADDRINUSE',
errno: -48,
syscall: 'listen',
address: '::',
port: 5000
}
대충 Error: listen EADDRINUSE: address already in use :::5000 라는
에러가 떴다는 뜻인데, 뭐 하나 참 쉽지않네요.
그래도 저는 절망하지 않습니다! 인생은 늘 순탄하지 않지만 헤쳐나갈 방법 또한 늘 있으니까요!
NodeJS address already in use
다른 프로세스가 사용중이거나 NodeJS 프로세스가 이전에 비정상적으로 종료되었을 때 등장하는 에러라고 합니다.
'5000번 포트가 다른 프로세스에서 사용중이니 해당 포트를 사용하는 서비스를 실행할 수 없다'라는 내용의 친절한 에러 메시지에 따라,
저는 어디선가 돌아가고 있는 5000번 포트를 쓰는 프로세스를 찾아 부셔버리기로 마음먹었습니다.
(대충 강제종료 갈기겠다는 뜻)
OS에 따라 윈도우와 맥에서의 해결방법이 다른데,
저는 이번달에 멋진 Macbook 유저가 되었기때문에 MacOS(혹은 Linux)에서 해결해보도록 하겠습니다.
(윈도우는 작업관리자에서 해결 가넝하다고 함 ㅎㅎ..)
MacOS, Linux에서는 터미널에서 프로세스를 바로 확인할 수 있습니다.
% lsof -i TCP:5000
위 명령어를 입력시, 아래와 같이 출력됩니다.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ControlCe 648 sssua-0928 21u IPv4 0x468f8a2e9b12855b 0t0 TCP *:commplex-main (LISTEN)
프로세스 이름은 ControlCe, 프로세스의 PID값은 648이네용~.~
머 대충 ControlCe라는 프로세스가 5000번 포트를 사용하고 있다는 뜻입니다. (Control Center가 정확히 어딘지는 모르겠음)
쨌든 ControlCe고 나발이고 얼른 부셔버리고 제 할일을 하도록 할게요.
이 프로세스를 강제종료 시켜봅시다 :)
kill -9 {PID값}
저는 kill -9 648해주었습니다.
자잔!
ㅋㅋ당연히 될 줄 알았는데 역시 인생은 쉽지않군요.
짜잔! 삭제한 5000번 포트가 다른 PID값으로 부활(..)했습니다ㅎㅎ
이때부터 머리가 아파오기 시작했어요... 눈물을 흘리며 다시 구글링...
그러다 저처럼 눈물흘리며 해결방법을 찾는 전세계인이 모인 곳에서 진짜 해결방법 발견!
macOS를 Monterey로 업데이트해서 발생한 문제 어쩌구저쩌구라고 합니다..
이번에 업데이트된 AirPlay기능이 5000번 포트를 사용한다구 어쩌구...
아무튼 방법은 아래와 같습니다!
이제 5000번 포트를 사용하는 프로세스가 아.직.도 있는지 확인해봅시다.
휴 드디어 성공!
오늘도 모두 행복한 하루 되시길~!