development

Node.js Port 3000이 이미 사용 중이지만 실제로는 그렇지 않습니까?

big-blog 2020. 12. 27. 20:42
반응형

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 / hosts가 비어 있다고 확신하는 경우) 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)


Try opening the localhost in your browser. Just type: localhost:3000 in the address bar.

If the app opens-up, it means your previous npm run is still active. Now, you can just make changes to the code and see the effects if you are designing the same app, or if you wanna run another app, just tweak the code (in index.js of previously running app) a little-bit and (probably refresh the browser tab) to make it crash ;)..... Now go run npm run start again from your new app directory. Hope this helps! :)

or

You can open the Task Manager (WINDOWS_KEY+X > Task Manager) and you'll see the "Node.js:Server-side JavaScript" row. Select that and end task....It should work now!!



If not, change the .env file of your app to include port:3002 and run the new app. This will allow you to run two separate apps on different ports. Cheers!!


In package.json scripts inlcude:

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

I believe the issue was for me the time that the old port was not shutting down in time by nodemon for the restart. I experienced the issue using multer.


For windows user, Just simple stop all processes of Node.js in Task Manager

Hope it will help


check for any process running on the same port by entering the command:

sudo ps -ef

You can find the process running on the respective node port, then kill the node by

kill -9 <node id>

If the problem still remains then just kill all the node

killall node

Works on mac, haven't tried on windows: pass port number that you want to stop/kill for example port 8000:

pkill -8000 node

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

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

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

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

반응형