[Node.JS] 포트 연결 끊기 & 재접속하기

Dico·2021년 3월 2일
3

예상치못한 에러메세지 출현

새로운 미션으로 Express로 서버를 구축하는 과정에서 3000번 포트가 이미 사용되고 있다는 에러가 나타났다. 실컷 설치를 하고 npm start로 실행시키려는데 떡하니 이런 메세지가 나온다.

아마도 지난번 미션을 하면서 사용했던 http://localhost:3000 이 여전히 사용되고 있기 때문인 것 같다.
포트가 계속 사용되는 상태라고 하니 단순히 터미널을 끄거나 브라우저 창을 끄는 것만으로는 서버와 클라이언트의 연결이 끊어지지 않는걸까?

그럼 이제 에러를 해결할 수 있는 옵션은 2개:
1. 새로운 프로젝트에 사용할 (3000번이 아닌)port번호를 설정해준다.
2. 이전 프로젝트와 3000번 포트의 연결을 끊고 이번 프로젝트를 연결해 다시 실행한다.

1번 옵션을 해볼까하고 app.jsbin파일을 스윽~ 훑어봤는데 라우터도 있고 뭐도 있고... 일단 후퇴.
역시 아직 이해가 부족하다. 2번 옵션으로 해보기로 했다.

3000포트를 사용하는 프로세스(PID)찾기

먼저 3000포트를 사용하고 있는 프로세스 아이디(PID)를 찾아야 한다.
구글링으로 2가지 방법을 찾았는데,

netstat -vanp tcp | grep 3000

이렇게↑ 입력할 경우에는 이런 화면이 나온다. 간소화 된 정보를 보여주는 것 같은데 너무 뭐가 뭔지 모르겠다😂

다행히 이렇게↓ 입력을 하면 (패스워드를 입력해야 하는 단계가 하나 더 추가되기는 하지만)조금 더 친절한 화면이 나온다.

sudo lsof -i :3000


PID번호는 59953이었다는 걸 찾아냈다!

포트 연결 끊기(kill)

자 이제 PID 번호도 찾아냈겠다, 연결을 끊어야한다.

//kill -15 [pid#]
kill -15 59953

이 모든 과정은 stackoverflow를 참고했는데, kill -15 [pid#]말고도 kill -9 [pid#]라는 게 있다고 한다.
그런데 kill -15 [pid#]연결을 끊고나서 나머지 잔여물들이 남지 않도록 말끔히 처리하는 반면, kill -9 [pid#]는 데이터베이스와 같은 잔여물들이 불안정한 상태로 남아있을 수 있어 사용을 권장하지 않는 분위기다.

다시 연결: npm start

정상적으로 연결이 끊겼다면, 다시 sudo lsof -i :3000로 조회하면 아무것도 보이지 않는다.
이제 필요한 작업은 완료된 것 같으니 모듈이 설치된 디렉토리로 옮겨가서 다시 실행해보자!
Default로 설정되는 포트는 3000번이므로 별도로 설정할 필요는 없다.

//DEBUG=[프로젝트 디렉토리명]:* npm start
DEBUG=fe-w4-martian:* npm start
//혹은
npm start


🎉 성공 🎉


Reference

https://stackoverflow.com/questions/3855127/find-and-kill-process-locking-port-3000-on-mac

profile
프린이의 코묻은 코드가 쌓이는 공간

6개의 댓글

comment-user-thumbnail
2021년 3월 2일

굳굳!!!!!!!!!!!!!!!!! 👏👏👏👏👏👏

1개의 답글
comment-user-thumbnail
2021년 3월 3일

와 역시 정리 왕 디코👍🏼 👍🏼 👍🏼

1개의 답글
comment-user-thumbnail
2021년 3월 8일

디코 이제 서버도 마스터!!
오랜만에 velog 왔더니 제 글에 댓글이 ㅋㅋ
저 이사했습니다 https://somedaycode.github.io/ 요기로

1개의 답글