connect를 사용하여 node.js에서 간단한 서버를 실행하고 있습니다.
var server = require('connect').createServer();
//actions...
server.listen(3000);
내 코드에는 실제 처리기가 있지만 기본 아이디어입니다. 내가 계속 얻는 문제는
EADDRINUSE, Address already in use
이전에 충돌이 발생한 후 응용 프로그램을 다시 실행할 때이 오류가 발생합니다. 터미널의 새 인스턴스를 열지 않기 때문에로 프로세스를 닫습니다 ctr + z
.
서버 또는 연결을 닫는 것만으로도 확실합니다. 나는 운없이 전화 server.close()
를 시도했다 process.on('exit', ...);
.
답변
process.on('exit', ..)
프로세스가 충돌하거나 종료되면 호출되지 않습니다. 이벤트 루프가 끝날 때만 호출되며, server.close()
일종의 이벤트 루프 가 종료되므로 (현재 실행중인 스택을 기다려야 함) exit 이벤트 안에 넣는 것은 의미가 없습니다 …
충돌시, 수행 process.on('uncaughtException', ..)
및 종료process.on('SIGTERM', ..)
즉, SIGTERM (기본 종료 신호)은 앱을 정리하는 반면 SIGKILL (즉시 종료)은 앱이 아무것도하지 못하게합니다.
답변
명령 행 경로로 이동할 수도 있습니다.
ps aux | grep node
프로세스 ID를 가져옵니다.
그때:
kill -9 PID
강제 종료시 -9를 수행하면 SIGKILL (SIGTERM 대신)이 전송됩니다. 때때로 SIGTERM이 노드에 의해 무시되었습니다.
답변
먼저, 어떤 프로세스가 사용 중인지 알고 싶을 것입니다 port 3000
sudo lsof -i :3000
여기 에는이 포트에서 수신되는 모든 PID 가 나열됩니다 . PID가 있으면 다음을 사용하여 종료 할 수 있습니다.
kill -9 {PID}
답변
win8을 실행하는 랩톱 에서이 문제를 해결했습니다. 이것은 효과가 있었다.
cmd.exe를 ‘관리자’로 실행하십시오.
C:\Windows\System32>taskkill /F /IM node.exe
SUCCESS: The process "node.exe" with PID 11008 has been terminated.
답변
아래 명령으로 포트 3000에서 실행중인 프로세스의 PID 즉 ID를 확인하십시오.
lsof -i tcp:3000
다음과 같이 출력됩니다.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 5805 xyz 12u IPv6 63135 0t0 TCP *:3000 (LISTEN)
이제 다음을 사용하여 프로세스를 종료하십시오.
kill -9 5805
답변
이 솔루션을 찾았습니다. 사용 권한을 부여하십시오. sudo
sudo pkill node
답변
리눅스
ps
노드 프로세스의 PID를 실행 하고 결정하십시오.
그런 다음 실행 sudo kill PID
윈도우
tasklist를 사용하여 실행중인 프로세스 목록을 표시하십시오.
tasklist /O
그런 다음 tasklist
명령 에서 얻은 PID를 사용하여 노드 프로세스를 종료하십시오 .
taskkill /pid PID
