ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #TIL(error)_ERROR: NodeJS address already in use // Window 해결 방법
    TIL (Today I Learned) 2023. 12. 11. 19:35

     

    # NodeJS address already in use 문제의 발생

    과제를 수행하던 중 REST client를 사용하여 API를 테스트하기 위해 nodemon을 실행했는데, 갑자기 다음과 같은 오류가 발생했습니다. 에러 내용을 자세히 살펴보면 "Error: listen EADDRINUSE: address already in use :::3306"라는 내용이 있습니다.

    "Error: listen EADDRINUSE: address already in use :::3306"

     

    이는 3306번 포트가 현재 다른 프로세스에 의해 사용 중이어서 해당 포트를 사용하는 현재 서버를 시작할 수 없다는 에러 메시지입니다.

     

     이러한 에러 메시지는 두 가지 상황 중 하나일 것입니다. 정말로 다른 프로세스가 해당 포트를 사용 중이거나, NodeJS 프로세스가 이전에 비정상적인 방식으로 종료되어 발생한 일반적인 증상입니다.

     

    ** 오류 발생 사진 


    # NodeJS address already in use 문제 해결방법

    이 문제를 해결하려면 먼저 3306번 포트를 사용하는 프로세스를 찾아서 종료해야합니다. 이 과정에서 GUI를 활용하는 것이 가장 빠른 방법일 수 있습니다. 주로 작업 관리자와 같은 프로세스 탐지 프로그램을 사용하는데, 이러한 프로그램에서는 특정 포트 번호를 사용하는 프로세스를 직접 표시하지 않습니다.

     

     따라서 먼저 작업 관리자나 기타 프로세스 탐지 도구를 열어 해당 포트를 사용 중인 프로세스를 찾아야 합니다. 그 후, 찾은 프로세스를 선택하고 종료 또는 강제 종료하여 프로세스를 중지합니다.

     

     이렇게 해서 3306번 포트를 확보한 다음에는 다시 nodemon을 실행하면 문제가 해결될 것입니다.

     

    ** window 버튼 + R 클릭


    ** 명령프롬프트(CMD) 실행 후 커맨더 창에 명령어 입력합니다.(사용 중인 프로세서 확인 방법)

    netstat -ano

     

    // -a (모든 포트 표시)

    // -n (IP:PORT 형식으로 표시)

    // -o (PID표시)


    ** netstat -ano 입력 후 리스트 확인해야합니다. 


    ** 재사용하고자 하는 로컬 주소와 함께 프로세스 ID인 PID 값을 확인하는 것이 꼭 필요합니다.


    ** 저의 경우 PID 5192번에 3306 포트가 잡혀있었습니다. 이후 작업 관리자로 넘어갑니다.


    ** 작업관리자를 실행 합니다.


    ** PID 정렬을 누른 후 아까 확인하였던 PID 5192를 찾습니다.


    ** 저의 경우 해당 프로세스는 'mysqld.exe'에서 사용 중이었습니다. 보통은 'node.exe'가 해당 프로세스인 겨우가 많습니다. 해당 프로세서 클릭 후 작업 끝내기를 클릭하여 강제로 종료합니다.


    ** 이제 다시 'npm run dev'명령어를 실행하여 구동 확인을 합니다. (정상 작동합니다.)

Designed by Tistory.