답변:
이는 서버를 바인딩하려는 주소가 사용 중임을 의미합니다. 다른 포트를 시도하거나 해당 포트를 사용하여 프로그램을 닫으십시오.
node app.js
Ctrl + C로 사용 하고 중지 했을 때 작동 했지만 처음 사용한 후 EADDRINUSE 문제가 발생하기 시작 npm start
했으므로 실제 해결책은 Ctrl + C 이외의 것을 사용하여 종료하는 것 같습니다 npm start
.
npm start
스크립트는 두 개 이상의 노드 프로그램 또는 백그라운드에서 실행 된 인 노드 프로그램이 될 수도 있고, 프로그램이 해당 포트를 사용하여 자식 프로세스가있을 수 있습니다.
ps aux | grep node
, 프로세스 ID (두 번째 열)를 찾아서 kill <pid>
(mine was kill 18762
)로 간단히 죽였습니다 .
운영:
ps -ax | grep node
다음과 같은 내용이 표시됩니다.
60778 ?? 0:00.62 /usr/local/bin/node abc.js
다음을 수행하십시오.
kill -9 60778
kill -15 60778
SIGTERM
aSIGKILL
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>
<pid>/<parent>
내가 얻을-
다음 명령은 실행중인 노드 프로세스 목록을 제공합니다.
ps | grep node
해당 포트를 해제하려면 다음을 사용하여 프로세스를 중지하십시오.
kill <processId>
| grep -v grep
를 제외 하기 위해를 추가 할 수 있습니다 grep
.
pidof node
pidof
homebrew를 사용하여 osx에 쉽게 설치되었습니다brew install pidof
EADDRINUSE
응용 프로그램에서 사용하려는 포트를 다른 프로세스에서 사용하고 있기 때문에 오류가 발생 합니다. 이 포트를 해제하려면 점유 프로세스를 종료해야합니다.
당신이에 있기 때문에 윈도우 , 명령 프롬프트를 사용하여 프로세스를 종료 할 수 있습니다 ( cmd
). 이랑cmd
차단 응용 프로그램의 프로세스 ID (PID)를 찾을 수 있습니다. 프로세스를 종료 / 종료하려면 PID가 필요합니다.
다음은 단계별 가이드입니다 ...
지정된 포트에서 실행중인 모든 프로세스를 찾습니다 (이 예에서 포트는 "3000").
netstat -ano | ": 3000"찾기
이 netstat
명령은 지정된 포트에서 실행중인 모든 프로세스를 나열합니다. netstat
결과 의 마지막 열 에서 PID
s를 볼 수 있습니다 (이 예에서 PID는 "8308"). PID
다음 명령을 실행하여 특정 항목 에 대해 자세히 알아볼 수 있습니다 .
작업 목록 / fi "pid eq 8308"
프로세스를 종료하려면 다음 명령을 사용하여 수행 할 수 있습니다 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 '.) 다른 것을 검색해야 할 수도 있습니다. 포트.
저에게 도움이 된 한 가지 가능한 해결책은 " http : // localhost : 3000 / "스크립트가 실행중인 브라우저에서 창을 닫는 것 입니다.
오류가 발생하면
오류 : EADDRINUSE 듣기
명령 프롬프트를 열고 다음 지침을 입력하십시오.
netstat -a -o | grep 8080
taskkill /F /PID** <*ur Process ID no*>
그 후 전화 간격 인터페이스를 다시 시작하십시오.
어떤 프로세스 ID phonegap이 사용 중인지 알고 싶다면 TASK MANAGER를 열고 열 제목 PID 를보고 PID 번호를 찾으십시오.
killall -9
Patrick이 제안한 앞서 언급 한 노드는 예상대로 작동하고 문제를 해결하지만 이유에 대한 바로이 답변의 편집 부분을 읽고 싶을 수 있습니다.kill -9
최선의 방법이 아닌지 수 있습니다.
또한 모든 활성 프로세스를 맹목적으로 죽이는 대신 단일 프로세스를 대상으로 할 수 있습니다.
이 경우 먼저 해당 포트 (예 : 8888)에서 실행중인 프로세스의 PID (프로세스 ID)를 가져옵니다.
lsof -i tcp:8888
다음과 같은 결과가 반환됩니다.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 57385 You 11u IPv6 0xac745b2749fd2be3 0t0 TCP *:ddi-tcp-1
(듣기) 그럼 그냥하세요 (ps-실제로는하지 마세요. 아래를 계속 읽으세요) :
kill -9 57385
학습하는 동안 동일한 코드에서 실행되는 동일한 포트 8081에서 수신 대기하는 2 개의 서버를 만들었습니다.
첫 번째 서버 생성 shud가 작동했습니다. EADDRINUSE로 두 번째 서버 생성 실패
node.js 콜백 지연은 작동하지 않거나 두 번째 서버 생성에 예외가 있고 프로그램이 종료 된 이유 일 수 있으므로 첫 번째 서버도 닫힙니다.
2 서버 문제 힌트, 내가 얻은 : 오류 수정 방법 : nodejs를 사용하는 동안 EADDRINUSE 수신?
오류 : EADDRINUSE를 듣고 터미널에서 실행되는 Ubuntu netstat -nptl
에서이 문제를 해결 kill -9 {process-number}
하고이 명령 후에 노드 프로세스를 종료하고 이제 node server.js 명령을 다시 실행할 수 있습니다.
전의
EADDRINUSE ::: 8080 듣기
netstat -nptl
tcp6 0 0 ::: 9000 ::: * LISTEN 9660 / java
tcp6 0 0 ::: 5800 ::: * LISTEN-
tcp600 ::: 5900 ::: * LISTEN-
tcp60 ::: 8080 :: : * LISTEN 10401 / node
tcp6 0 0 ::: 20080 ::: * LISTEN 9660 / java
tcp600 ::: 80 ::: * LISTEN-
tcp600 ::: 22 ::: * LISTEN-
tcp60 ::: 10137 ::: * 9660 / java 듣기
죽이기 -9 10401
netstat
다른 매개 변수를받습니다. netstat -a -p tcp -b -v
프로세스 이름을 출력합니다.
두 개의 다른 탭에서 npm start 명령을 실행하려고 시도했을 수 있습니다. 일부 탭에서 이미 실행중인 경우 npm start를 실행할 수 없습니다. 한 번 확인하십시오.
시작 노드보다 ubantu의 터미널에서 pkill -9 노드로 노드를 종료하십시오.
창에서 다음 명령을 실행하십시오.
taskkill /F /PID 1952
sudo killall node
편리 할 수 있습니다