1 분 소요

npm run 명령어를 사용하여 NodeJS를 사용한 웹사이트를 실행하려 할 때 다음과 같은 에러가 나타나며 진행되지 않는 경우가 있다.

이는 3065번 포트가 이미 다른 프로세스에서 사용중이기 때문에 현재 프로세스에서 해당 포트를 사용할 수 없다는 에러메세지이다. (에러의 포트 번호는 3065가 아닐 수 있고, 본인의 에러메시지의 포트번호를 파악해야 한다.)

NodeJS address already in use 문제

이는 정말로 다른 프로세스가 3065번 포트를 사용하고 있거나, NodeJS 프로세스가 이전에 비정상적으로 종료된 경우 나타나는 현상이라고 한다. 나의 경우, 프로세스에 해당 포트를 직접 지정해서 사용하고 있었기에 후자에 해당된다.

이를 해결하기 위해서는 3065번 포트를 사용하는 프로세스를 찾고, 강제종료 해주어야 한다.

MacOS에서 포트를 사용하는 프로세스 찾기

맥OS에서는 터미널에서 lsof 라는 명령어를 사용하여 간단히 프로세스를 확인하고 종료할 수 있다. lsof 는 터미널에서 활성화된 프로세스 리스트를 출력할 수 있도록 돕는 명령어이고, -i 옵션을 사용하면 특정포트를 사용중인 프로세스만 보여주게 된다.

lsof -i TCP:3065

다음과 같은 출력 결과가 나타났다.

COMMAND   PID         USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node     17355   user  24u  IPv6 0x9e05675d03f89d85      0t0  TCP *:slinterbase (LISTEN)

결과값을 살펴보면 가장 왼쪽의 node는 프로세스 이름, 바로 우측의 17355는 프로세스의 PID값이다. 즉 node 17355 프로세스가 3065포트를 점유하고 있다는 것이다.

이제 이 프로세스를 kill 명령어를 통해서 강제 종료 시킬 수 있다.

kill -9 17355

-9는 kill의 강제 종료 시그널인 9번을 사용한다는 의미로, 위 명령어를 사용하여 프로세스를 종료할 수 있다.

npm run 명령을 다시 실행하면 문제가 해결되고 다시 해당포트에 연결된다.

참고사이트 https://jootc.com/p/201912253249

댓글남기기