Mac Monterey OS에서 EADDRINUSE 에러 해결하는 법

해당 포트(아래 예시는 5000)를 이미 다른 프로세스에 의해 사용중일 때 다음과 같은 에러가 난다.

[0] Error: listen EADDRINUSE: address already in use :::5000
[0]     at Server.setupListenHandle [as _listen2] (node:net:1330:16)
[0]     at listenInCluster (node:net:1378:12)
[0]     at Server.listen (node:net:1465:7)
[0]     at READ_WRITE (your_path/node_modules/webpack-dev-server/lib/Server.js:3215:23)
[0]     at new Promise (<anonymous>)
[0]     at Server.start (your_path/node_modules/webpack-dev-server/lib/Server.js:3213:7)
[0]     at async Command.<anonymous> (your_path/node_modules/@webpack-cli/serve/lib/index.js:242:25)
[0]     at async Promise.all (index 1)
[0]     at async Command.<anonymous> (your_path/node_modules/webpack-cli/lib/webpack-cli.js:1672:7) {
[0]   code: 'EADDRINUSE',
[0]   errno: -48,
[0]   syscall: 'listen',
[0]   address: '::',
[0]   port: 5000
[0] }

이때 포트를 사용중인 프로세스는 다음 커맨드로 확인 가능하다.

sudo lsof -i :5000

해당 프로세스를 kill -9 PID로 제거하면 해결된다.

그런데 맥 Monterey OS에서는 Command Center 프로세스가 뜨는 경우가 있는데, 이 프로세스는 OS에 의해 계속해서 재시작된다. 이는 System Preferences - Sharing - AirPlay Receiver 에서 On 체크를 지워주면 해결된다.

Ref

https://stackoverflow.com/questions/4075287/node-express-eaddrinuse-address-already-in-use-kill-server

https://nono.ma/port-5000-used-by-control-center-in-macos-controlce