[node.js] 오류에서 localhost를 해제하는 방법 : EADDRINUSE 수신

Windows 7에서 nodejs로 작성된 서버를 테스트 중이며 명령 줄에서 테스터를 실행하려고하면 다음 오류가 발생합니다.

Error: listen EADDRINUSE
at errnoException (net.js:614:11)
at Array.0 (net.js:704:26)
at EventEmitter._tickCallback (node.js:192:40)

재부팅하지 않고 어떻게 고칠 수 있습니까?



답변

이는 서버를 바인딩하려는 주소가 사용 중임을 의미합니다. 다른 포트를 시도하거나 해당 포트를 사용하여 프로그램을 닫으십시오.


답변

운영:

ps -ax | grep node

다음과 같은 내용이 표시됩니다.

60778 ??         0:00.62 /usr/local/bin/node abc.js

다음을 수행하십시오.

kill -9 60778


답변

Linux에서 (최소한 Ubuntu 파생 제품)

killall node

이 양식보다 쉽습니다.

ps | grep <something>
kill <somepid>

포트를 보유한 고아가있는 경우에는 둘 다 작동하지 않습니다. 대신 다음을 수행하십시오.

netstat -punta | grep <port>

포트가 보류중인 경우 다음과 같은 내용이 표시됩니다.

tcp           0      0.0.0.0:<port>          0.0.0.*       LISTEN     <pid>/<parent>

이제 pid로 죽여라.

kill -9 <pid>


답변

다음 명령은 실행중인 노드 프로세스 목록을 제공합니다.

ps | grep node

해당 포트를 해제하려면 다음을 사용하여 프로세스를 중지하십시오.

kill <processId>


답변

EADDRINUSE응용 프로그램에서 사용하려는 포트를 다른 프로세스에서 사용하고 있기 때문에 오류가 발생 합니다. 이 포트를 해제하려면 점유 프로세스를 종료해야합니다.

당신이에 있기 때문에 윈도우 , 명령 프롬프트를 사용하여 프로세스를 종료 할 수 있습니다 ( cmd). 이랑cmd 차단 응용 프로그램의 프로세스 ID (PID)를 찾을 수 있습니다. 프로세스를 종료 / 종료하려면 PID가 필요합니다.

다음은 단계별 가이드입니다 …

  1. 지정된 포트에서 실행중인 모든 프로세스를 찾습니다 (이 예에서 포트는 “3000”).

    netstat -ano | “: 3000″찾기

  2. netstat명령은 지정된 포트에서 실행중인 모든 프로세스를 나열합니다. netstat결과 의 마지막 열 에서 PIDs를 볼 수 있습니다 (이 예에서 PID는 “8308”). PID다음 명령을 실행하여 특정 항목 에 대해 자세히 알아볼 수 있습니다 .

    작업 목록 / fi “pid eq 8308”

  3. 프로세스를 종료하려면 다음 명령을 사용하여 수행 할 수 있습니다 PID(이 예에서 PID는 “8308”).

    taskkill / pid 8308 / f

스크린 샷

여기에 이미지 설명 입력


답변

오류 오류가 발생하면 EADDRINUSE 수신,

다음 셸 명령을 실행 해보십시오.

netstat -a -o | grep 8080
taskkill /F /PID 6204

나는 grep내 서버가 포트 8080에서 실행되고 있다는 것을 알고 있기 때문에 8080을 ed. ( static내가 시작할 때 알려줍니다 : ‘serving “.”at http://127.0.0.1:8080 ‘.) 다른 것을 검색해야 할 수도 있습니다. 포트.


답변

서버가 실행 중이라고 가정하십시오. port 3000

lsof -i tcp:3000
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    node    11716 arun   11u  IPv6 159175      0t0  TCP *:3000 (LISTEN)

그 사용 후 kill -9 <pid>

위의 경우 sudo kill -9 11716