ProgramingTip

Node.js Port 3000이 이미 사용 중이지만 실제로는 말입니까?

bestdevel 2020. 12. 26. 15:56
반응형

Node.js Port 3000이 이미 사용 중이지만 실제로는 말입니까?


나는 몇 주 동안 node.js 프로젝트로 작업 해 왔으며 훌륭하게 작동하고 있습니다. 일반적으로 'npm start'를 사용하여 내 앱을 실행하고 localhost 포트 3000의 브라우저에서 볼 수 있습니다.

오늘 npm start를 사용하는 동안 다음 오류가 발생하기 시작했습니다.

Server started on port 3000                                                                                                                                                                                         
Port 3000 is already in use 

리소스 모니터를 확인한 포트 3000에서 실행중인 다른 프로세스가 없습니다.이 오류 메시지가 이유는 무엇입니까?

내 app.js에는 포트를 설정하는 다음 코드가 있습니다. 이전에는 잘 작동하고 내가 뭘 잘못하고 있는지 잘 모르겠습니다.

// Set Port
app.set('port', (process.env.PORT || 3000));
app.listen(app.get('port'), function() {
    console.log('Server started on port '+app.get('port'));
});

도와 주셔서 감사합니다!

편집 : netstat 및 TCPView를 실행하여 포트를 사용하는 프로세스를 확인했지만 해당 포트를 사용하는 것이 없습니다. 여전히 랩톱을 다시 시작했지만 여전히 오류가 발생합니다.


해당 프로세스를 종료하는 방법을 검색 할 수 있습니다.

들어 리눅스 / 맥 OS는 검색 (sudo) run터미널에서 제출자 :

$ lsof -i tcp:3000
$ kill -9 PID

Windows의 경우 :

netstat -ano | findstr :3000
tskill typeyourPIDhere 

변경 tskill에 대한 taskkill마이 bash는


@sova가 제안한 것으로 추정됩니다. 이것은 EADDR이 사용 중입니다. 일반적으로 백그라운드에서 여전히 앱을 실행중인 터미널 창이 숨겨져 있습니다. 그리고 그것은 나에게도 맞습니다.

오랜 시간 동안 터미널을 열었을 때 발생합니다. 맞습니다. 프로세스를 중지했습니다. 그러나 그것이 배경에서 멈추지 않다. 가장 좋은 해결책은 터미널을 닫고 다시 시작하는 것입니다. 그것은 당신의 문제를 해결하는 것입니다. 제 경우에는 작동합니다.

또한,

sudo lsof -i:<PORT_NO>

현재 인스턴스를 닫지 만 백그라운드에서 중지 할 수 없습니다. 그래서 한 번

sudo kill <PID>

작동하지만 코드를 업데이트하고 저장하면 Nodemon 에서와 마찬가지로이 문제가 다시 발생합니다 .

따라서 터미널을 종료하면 문제가 해결됩니다. 또는

  killall -9 node

Windows의 경우 작업 관리자는 실행중인 노드 프로세스를 확실히 보여줍니다. 프로세스를 종료하면 문제가 해결됩니다.


나는 같은 문제가 있었다. (아래 단계는 Windows 10에서 잘 작동합니다) :

  1. 작업 관리자 열기 ( Ctrl+ Alt+ 누름 Delete)
  2. '프로세스 탭'을 선택하십시오.
  3. 'Node.js : Server-side JavaScript'를 검색합니다.
  4. 그것을 선택하고 '작업 끝내기'버튼을 클릭하십시오.

이제 npm start.

도움이되기를 바랍니다.


이것은 일종의 나에게 발생하며 EADDR을 사용합니다. 일반적으로 여전히 앱을 실행중인 백그라운드에 숨겨져있는 터미널 창이 있습니다. 터미널 창에서 Ctrl + C를 눌러 프로세스를 중지 할 수 있습니다.

또는 복사 / 파스타 =)로 인해 포트를 여러 번 사용할 수 있습니다.


나는 똑같은 것을 제안 고 위의 모든 제안을 성공하지. -Wi-Fi 시작 -npm 시작 (작동 함) -Wi-Fi

근본 문제가 무엇인지 정확히 모르겠지만 그 문제가 해결되었습니다.


작업 관리자 열기 (Ctrl + Alt + Del 누름 '프로세스 탭'선택 'Node.js : Server-side JavaScript'검색 선택 후 '작업 끝내기'버튼 클릭)


High Sierra에 대한 솔루션으로 Google에서 왔습니다.

macOS의 설정에서 변경된 사항과 일부 앱 (ping)이 localhost를 확인할 수 없습니다.

/ etc / hosts 편집은 수정처럼 시청 :

cmd : sudo nano /etc/hosts/내용127.0.0.1 localhost

또는 간단히 (/ etc / host가 비어있는 확신하는 경우) sudo echo '127.0.0.1 localhost' > /etc/hosts


나는 왜 EADDRINUSE앱을 허용하지 않는지 알아내는 데 2 ​​시간을 보냈습니다 (다른 노드 익스프레스 서버는 괜찮 았습니다) ... lazyConnect: true, 데이터 소스 구성에 추가 한 후 작동하기 시작했습니다 .

왜 도움이되었는지 묻지 마세요. 나도 몰라. 나는 같은 문제를 가진 사람들을 위해이 정보를 여기에 넣습니다.


Windows에서 Git Bash를 사용 하여이 문제가 발생했습니다. 나는 npm start, 또는 node app.js. 곧 Ctrl + C로 종료하고 다시 사용하여 서버를 시작하려고 후 npm start또는 node app.js나는이 오류 메시지가 표시됩니다.

그러나 일반 Windows 명령 프롬프트 로이 작업을 수행하면 제대로 작동합니다.

또는 다른 방법으로 할 수 있습니다. 관리자를 사용하는 " Node.js : Server-side JavaScript "행을 찾습니다 . 그것을 선택하고 작업을 종료 합니다. 이제 작동합니다.

감사합니다.


Windows 사용자의 경우 CurrPorts 도구를 사용하여 사용중인 포트를 쉽게 종료 할 수 있습니다.

여기에 이미지 설명 입력


백그라운드에서 실행되는 관리자 프로세스 일 수 언어가 netstat표시되지 않습니다. 이 관리 프로세스의 PID를 찾는 데
사용 tasklist | grep node하고kill PID


webstorm을 사용하는 경우 파일-> 설정-> 빌드, 실행, 배포-> 디버거에서 기본 포트가 3000이 아닌지 확인하십시오.

내장 서버 포트

"63342"로 설정 하거나이 답변을 참조 하십시오. WebStorm LiveEdit 포트 변경 (63342)


브라우저에서 로컬 호스트를 열어보십시오. localhost:3000주소 표시 줄에 다음 입력하십시오 .

앱이 열리면 이전 앱 npm run이 여전히 활성 상태임을 의미합니다 . 이제 동일한 앱을 디자인하는 경우 코드를 변경하고 효과를 확인할 수 있습니다. 또는 다른 앱을 실행하려는 경우 이전에 실행 한 앱의 index.js에서 코드를 약간 조정하고 ( 브라우저 탭을 새로 고치면) 충돌이 발생합니다.) ..... 이제 npm run start새 앱 디렉토리에서 다시 실행 하십시오. 도움이 되었기를 바랍니다! :)

또는

작업 관리자 (WINDOWS_KEY + X> 작업 관리자)를 열면 "Node.js : Server-side JavaScript"행이 표시됩니다. 그것을 선택하고 작업을 종료하십시오 .... 이제 작동합니다 !!



그렇지 않은 경우 새 앱 .env을 포함 port:3002하고 실행하도록 앱 파일을 변경합니다 . 이렇게하면 서로 다른 포트에서 두 개의 개별 앱을 실행할 수 있습니다. 건배!!


package.json 스크립트에는 다음이 포함됩니다.

"start": "nodemon app.js --delay 1500ms"

문제는 이전 포트가 다시 시작하기 위해 nodemon에 의해 제 시간에 종료되지 않았던 때였습니다. 나는 멀터를 사용하여 문제를 경험했습니다.


Windows 사용자의 경우 작업 관리자 에서 Node.js의 모든 프로세스를 간단히 중지하십시오.

도움이되기를 바랍니다.


다음 명령을 입력하여 동일한 포트에서 실행중인 프로세스를 확인하십시오.

sudo ps -ef

각 노드 포트에서 실행중인 프로세스를 찾은 다음 다음을 수행하여 노드를 종료 할 수 있습니다.

kill -9 <node id>

문제가 계속되면 모든 노드를 종료하십시오.

killall node

Mac에서 작동하지만 Windows에서는 시도하지 않았습니다. 중지 / 종료하려는 포트 번호 (예 : 포트 8000)를 전달합니다.

pkill -8000 node

들어 사용자, 힘을 사용하여 프로세스 종료 활동 모니터 응용 프로그램을. 프로세스 에서 npm선택하고 X 버튼을 클릭하여 프로세스 종료 하거나 강제 종료합니다.

코드 편집기를 업데이트하고 다시 시작하는 동안이 문제가 발생하여 활동 모니터를 사용하여 수정했습니다.

활동 모니터 앱의 npm 프로세스

참조 URL : https://stackoverflow.com/questions/39322089/node-js-port-3000-already-in-use-but-it-actually-isnt

반응형