node.js - Error: listen EADDRINUSE: address already 에러 해결
'npm start' 명령어를 사용하여 node.js 서버를 실행하려 할 경우 'Error: listen EADDRINUSE: address already in use 0.0.0.0:80' 이런 오류가 나면서 node.js가 실행이 안되는 경우가 있습니다.
이 오류는 node.js를 비정상 종료 한 후 실행하려 하거나, 다른 프로세스에서 오류로 나온 해당 포트를 사용하고 있어서 생기는 오류입니다.
해당 프로세스 찾기
우선 이 'Error: listen EADDRINUSE: address already in use 0.0.0.0:80' 오류를 해결하기 위해선, 오류가 나온 해당 포트를 사용중인 프로세스를 찾은 다음, 해당 프로세스를 종료 또는 강제 종료 해주면 됩니다.
$ sudo lsof -i :포트번호
우선 리눅스, 라즈베리파이에서는 lsof라는 명령어로 해당 포트를 사용하는 프로세스를 찾을 수 있습니다. lsof라는 명령어는 'list open files'의 약자로, 열린 파일 목록과 해당 파일을 사용하는 프로세스등의 정보를 알려줍니다.
lsof에서 -i를 사용하여, 해당 포트를 사용하는 프로세스를 찾을 수 있습니다. 터미널에서 위 명령어를 입력하여, 해당 포트를 사용하는 프로세스를 찾아줄 수 있습니다.
프로세스 강제 종료
위의 명령어를 터미널에 입력하면 이런식으로 해당 포트를 사용하는 프로세스가 나옵니다. 해당 프로세스가 무엇인지 확인한 다음 종료를 해도 되면, 직접 해당 프로세스를 찾아서 종료를 하거나, 터미널에서 아랫 명령어를 사용하여 pid값을 통해 강제종료 시켜주면 됩니다.
$ sudo kill -9 pid값
터미널에 kill 명령어를 입력하여, pid값을 통해 해당 프로세스를 강제 종료해주면 됩니다.
참고로 kill 명령어 뒤에 -9는 KILL (non-catchable, non-ignorable kill), 강제종료를 의미 합니다.