오류에서 localhost를 해제하는 방법: EADDRINUSE 듣기
윈도우 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
응용 프로그램이 사용하려는 포트가 다른 프로세스에 의해 사용되고 있기 때문입니다.이 포트를 해제하려면 점유 프로세스를 종료해야 합니다.
Windows에 있으므로 명령 프롬프트를 사용하여 프로세스를 종료할 수 있습니다.cmd
)와cmd
차단 응용 프로그램의 프로세스 ID(PID)를 검색할 수 있습니다.프로세스를 종료하거나 종료하려면 PID가 필요합니다.
여기에 단계별 가이드가 있습니다...
지정된 포트에서 실행 중인 모든 프로세스를 찾습니다(이 예에서는 포트가 "3000"임).
netstat -ano | ":3000" 찾기
그
netstat
명령은 지정된 포트에서 실행 중인 모든 프로세스를 나열합니다.에의 에.netstat
는 결를확수있다니습할인을 볼 수 .PID
s(이 예에서 PID는 "8308"입니다).한 특목정대자알수있다니습아에 대해 더 알 수 .PID
다음 명령을 실행합니다.작업 목록/fi "pideq 8308"
할 수 .
PID
예에서 입니다.): (PID는 "8308"입니다.)태스크킬 /pid 8308 /f
스크린샷
오류가 발생하면 EADDRINUSE를 들으십시오.
다음 셸 명령을 실행해 보십시오.
netstat -a -o | grep 8080
taskkill /F /PID 6204
I grep
for 왜냐하면 내8080에서 되고 있다는 을 알기 (ed for 8080, ed for 8080, 포트에실행되고있다서다것는을때알니기문입왜내면가버서냐하)static
언제 시작하는지 알려줍니다. 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
아래 명령을 사용하여 특정 포트에서 실행 중인 프로세스를 종료합니다. 아래 예제에서는 3000을 사용합니다.
kill -9 $(lsof -t -i:3000)
한 가지 가능한 해결책은 브라우저에서 해당하는 "http://localhost:3000/" 스크립트를 실행하는 창을 닫는 것이었습니다.
오류가 발생할 때
오류: EADDRINUSE 수신 대기
명령 프롬프트를 열고 다음 지시사항을 입력합니다.
netstat -a -o | grep 8080
taskkill /F /PID** <*ur Process ID no*>
전화 갭 인터페이스를 다시 시작한 후.
어떤 프로세스 ID 폰갭을 사용하고 있는지 알고 싶다면 Task MANAGER를 열고 Column heading PID를 보고 PID no를 찾습니다.
프로세스 ID 확인
-i:8081의 황혼
특정 프로세스를 죽이는 것보다
sudo kill -9 2925
에서 말한 전한술.killall -9
패트릭이 제안한 노드는 예상대로 작동하고 문제를 해결하지만 당신은 왜 그런지에 대한 바로 이 답변의 편집 부분을 읽고 싶을 수 있습니다.kill -9
최선의 방법이 아닐 수도 있습니다.
또한 모든 활성 프로세스를 맹목적으로 죽이기보다는 단일 프로세스를 대상으로 하는 것이 좋습니다.
이 경우 먼저 해당 포트에서 실행 중인 프로세스의 프로세스 ID(PID)를 가져옵니다(예: 8888).
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
(Listen) 그럼 그냥 하세요 (ps - 실제로는 하지 마세요).아래를 계속 읽어 주십시오):
kill -9 57385
이 기능은 Mac에서 작동합니다.
1단계.
sudo lsof -i tcp:3000 (or whatever port you want to kill)
위의 명령은 현재 포트를 보유하고 있는 프로세스 ID를 제공합니다.
2단계.
Kill -9 <pid>
app.js 또는 프로젝트 구성 파일에서 포트를 변경할 수 있습니다.
기본값('포트', 80)
포트 80이 이미 사용 중인지 확인하려면 다음 작업을 수행합니다.
netstat - antp | grep 80
netstat - antp | grep 노드
노드 프로세스가 이미 실행 중인지 확인할 수 있습니다.
ps - ef | grep 노드
그리고 이미 실행 중인 것을 발견하면 다음을 사용하여 죽일 수 있습니다.
모든 노드 종료
학습 중에 동일한 코드에서 실행되는 동일한 포트 8081에서 수신하는 두 대의 서버를 만들었습니다.
첫 번째 서버 생성 슈드가 작동했습니다. 두 번째 서버 생성이 EADDRINUSE로 실패했습니다.
node.js 콜백 지연이 작동하지 않거나 두 번째 서버 생성에 예외가 발생하여 프로그램이 종료되어 첫 번째 서버도 닫혔을 수 있습니다.
2 서버 문제 힌트, 나는 다음에서 얻었습니다.오류를 해결하는 방법: nodejs를 사용하는 동안 EADDRINUSE를 들으시겠습니까?
에서 EADDRINUSE를 됩니다.netstat -nptl
그리고 그 이후로는kill -9 {process-number}
이 명령은 노드 프로세스를 종료하기 위한 것이며 이제 node server.js 명령을 다시 실행할 수 있습니다.
전
EADDRINUSE 듣기 :::8080
netstat -nptl
tcp600 :::9000 ::* LISTEN 9660/java
tcp600 :::5800 ::* LISTEN -
tcp600 :::5900 ::* LISTEN -
tcp600 :::8080 ::* LISTEN 10401/노드
tcp600 :::20080 ::* LISTEN 9660/java
tcp600 :::80 ::* LISTEN -
tcp600 :::22 ::* LISTEN -
tcp600 :::10137 ::* LISTEN 9660/java
킬 -9 10401
Mac과 Raspberry Pi에 설치된 노드가 없습니다.정확히 같은 문제가 있었고 '킬올'을 하는 것은 도움이 되지 않았습니다.일단 제가 라즈베리 파이를 종료하고 컴퓨터를 다시 시작하자 그것은 잘 작동했습니다.
두 개의 다른 탭에서 npm start 명령을 실행하려고 했을 수 있습니다. 일부 탭에서 이미 실행되고 있을 때 npm start 명령을 실행할 수 없습니다. 한 번 확인하십시오.
위의 모든 것을 시도했지만 여전히 연지 프로세스를 찾을 수 없는 사람은 모두 다시 시도하지만 명령 앞에 "sudo"를 포함해야 합니다.
UI를 더 좋아하면 Windows 작업 관리자에서 Node.js 프로세스를 찾아서 종료합니다.
ps - ef | grep 노드 찾기 app.js, killpid of app.js
시작 노드보다 ubantu 터미널에 있는 pkill-9 노드로 노드를 간단히 죽입니다.
터미널에서 다음 명령을 사용하여 포트를 종료해야 합니다.
$ sudo killall -9 nodejs
저는 제 패키지에 아래 내용을 추가하여 이 문제를 해결했습니다.활성 포트 제거용 json - 4000(내 경우) WSL2/리눅스/Mac에서 실행 중
"scripts": {
"dev": "nodemon app.js",
"predev":"fuser -k 4000/tcp && echo 'Terminated' || echo 'Nothing was running on the PORT'",
}
나는 그냥 그 (cmd) 터미널을 삭제하고 다른 터미널을 열고 node myfile.js를 다시 실행합니다.
그것은 저에게 아주 잘 맞습니다.
너무 늦었을 수도 있지만, 그것은 매력적으로 작동하고 있습니다.
필요합니다pm2
설치 예정
npm install -g pm2
현재 실행 중인 서버(server.js)를 중지하려면:
pm2 stop -f server.js
지금은 2022년이고 저는 몬테레이(Mac 사용자)에 있습니다.
lsof -i tcp:3000
Kill -9 <PID shown in your list>
노드 서버를 종료하려면 먼저 터미널에서 다음 명령을 실행합니다.
top
- 다른 창을 열고 서버를 복사합니다.
id
이전 창에서:PID number -9 kill
이제 노드 서버를 종료했습니다. 앱을 다시 실행해 보십시오.
명령어를 사용했습니다.netstat -ano | grep "portnumber"
해당 프로세스에 대한 포트 번호/PID를 나열합니다.그런 다음 사용할 수 있습니다.taskkill -f //pid 111111
프로세스를 종료하기 위해 마지막 값은 첫 번째 명령에서 찾은 pid입니다.
프로세스를 종료한 후에도 노드가 다시 생성되는 문제가 종종 발생하기 때문에 노드 프로세스를 수동으로 종료하기 위해 오래된 작업 관리자를 사용해야 합니다.
창에서 다음 명령을 실행하십시오.
taskkill /F /PID 1952
언급URL : https://stackoverflow.com/questions/8553957/how-to-release-localhost-from-error-listen-eaddrinuse
'prosource' 카테고리의 다른 글
MySQL에서 잘못된 문자열 값 오류가 발생함 (0) | 2023.09.05 |
---|---|
MySQL에서 타임스탬프할 문자열 (0) | 2023.09.05 |
PowerShell을 사용하여 텍스트 파일에서 특정 문자열 카운트 (0) | 2023.08.26 |
VBA나 매크로가 없는 SHA256/SHA512 해시를 위한 Excel 공식 기반 기능 (0) | 2023.08.26 |
GIT_DISCOVERY_ACROSS_FILESSYSTEM이 설정되지 않음 (0) | 2023.08.26 |