새로운 미션으로 Express로 서버를 구축하는 과정에서 3000번 포트가 이미 사용되고 있다는 에러가 나타났다. 실컷 설치를 하고 npm start
로 실행시키려는데 떡하니 이런 메세지가 나온다.
아마도 지난번 미션을 하면서 사용했던 http://localhost:3000
이 여전히 사용되고 있기 때문인 것 같다.
포트가 계속 사용되는 상태라고 하니 단순히 터미널을 끄거나 브라우저 창을 끄는 것만으로는 서버와 클라이언트의 연결이 끊어지지 않는걸까?
그럼 이제 에러를 해결할 수 있는 옵션은 2개:
1. 새로운 프로젝트에 사용할 (3000번이 아닌)port번호를 설정해준다.
2. 이전 프로젝트와 3000번 포트의 연결을 끊고 이번 프로젝트를 연결해 다시 실행한다.
1번 옵션을 해볼까하고 app.js
와 bin
파일을 스윽~ 훑어봤는데 라우터도 있고 뭐도 있고... 일단 후퇴.
역시 아직 이해가 부족하다. 2번 옵션으로 해보기로 했다.
먼저 3000포트를 사용하고 있는 프로세스 아이디(PID)를 찾아야 한다.
구글링으로 2가지 방법을 찾았는데,
netstat -vanp tcp | grep 3000
이렇게↑ 입력할 경우에는 이런 화면이 나온다. 간소화 된 정보를 보여주는 것 같은데 너무 뭐가 뭔지 모르겠다😂
다행히 이렇게↓ 입력을 하면 (패스워드를 입력해야 하는 단계가 하나 더 추가되기는 하지만)조금 더 친절한 화면이 나온다.
sudo lsof -i :3000
PID번호는 59953이었다는 걸 찾아냈다!
자 이제 PID 번호도 찾아냈겠다, 연결을 끊어야한다.
//kill -15 [pid#]
kill -15 59953
이 모든 과정은 stackoverflow를 참고했는데, kill -15 [pid#]
말고도 kill -9 [pid#]
라는 게 있다고 한다.
그런데 kill -15 [pid#]
는 연결을 끊고나서 나머지 잔여물들이 남지 않도록 말끔히 처리하는 반면, kill -9 [pid#]
는 데이터베이스와 같은 잔여물들이 불안정한 상태로 남아있을 수 있어 사용을 권장하지 않는 분위기다.
정상적으로 연결이 끊겼다면, 다시 sudo lsof -i :3000
로 조회하면 아무것도 보이지 않는다.
이제 필요한 작업은 완료된 것 같으니 모듈이 설치된 디렉토리로 옮겨가서 다시 실행해보자!
Default로 설정되는 포트는 3000번이므로 별도로 설정할 필요는 없다.
//DEBUG=[프로젝트 디렉토리명]:* npm start
DEBUG=fe-w4-martian:* npm start
//혹은
npm start
https://stackoverflow.com/questions/3855127/find-and-kill-process-locking-port-3000-on-mac
디코 이제 서버도 마스터!!
오랜만에 velog 왔더니 제 글에 댓글이 ㅋㅋ
저 이사했습니다 https://somedaycode.github.io/ 요기로
굳굳!!!!!!!!!!!!!!!!! 👏👏👏👏👏👏