티스토리 뷰

728x90

안녕하세요. 오늘은 NodeJS에서 개발하다가 흔하게 겪을 수 있는 에러인 EADDRINUSE에 대해서 알아보겠습니다.

 

//에러 내용
node:events:491
      throw er; // Unhandled 'error' event
      ^
Error: listen EADDRINUSE: address already in use :::3000
    at Server.setupListenHandle [as _listen2] (node:net:1741:16)
    at listenInCluster (node:net:1789:12)
    at Server.listen (node:net:1877:7)
    at Function.listen (실행 파일명,에러 발생한 코드 위치)
    at Object.<anonymous> (실행 파일명,에러 발생한 코드 위치)
    at Module._compile (node:internal/modules/cjs/loader:1239:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1293:10)
    at Module.load (node:internal/modules/cjs/loader:1096:32)
    at Module._load (node:internal/modules/cjs/loader:935:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:84:12)
Emitted 'error' event on Server instance at:
    at emitErrorNT (node:net:1768:8)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  code: 'EADDRINUSE',
  errno: -48,
  syscall: 'listen',
  address: '::',
  port: 3000
}



1. 발생 이유

 이 에러는 사용하고자하는 포트를 이미 다른 곳에서 사용중이라서 생기는 에러입니다. 이런 에러가 발생하는 이유는 보통 node를 실행하고 제대로 종료를 하지 않았기 때문입니다. 저는 개발할때 nodemon을 주로 사용하는데 중간중간에 의도치않게 제대로 종료하지 못해서 이 에러가 자주 발생했어요.

 

2. 해결 방법

 저는 현재 맥을 사용하고 있습니다! 맥에서 이 에러를 해결하기 위해서는 다음 과정을 진행하면 됩니다.

  1. 포트번호를 쓰는 PID(프로세스 아이디) 확인 -> sudo lsof -i : [포트번호]
  2. 해당 PID 강제종료 -> kill -9 [PID] 

저는 포트번호 3000번을 쓰고 있었기때문에 sudo lsof -i:"3000" 으로 했습니다. 이 명령어를 사용했더니 PID가 36446으로 나와서 kill -9 36446 명령어를 입력했습니다. 개개인마다, 프로그램마다 당연히 PID는 다르기때문에 꼭 직접 명령어 쳐보고 자기 PID를 확인해보시길 바랍니다.

 

 

*윈도우*

1. netstat -ano | findstr  [포트번호]

2. taskkill /pid [pid번호]

 

이상입니다. 감사합니다!

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함