运行ng serve命令时,“Port 4200已经在使用”

我正在学习angular 2,并且第一次使用angular CLI项目来创build一个沙箱项目。

我能够运行“ng服务”命令,它工作得很好。 我想阻止它运行,所以我跑了“控制Z”。

当我试图再次运行“ng-serve”命令时,它给了我“端口4200已经在使用”。

我运行“PS”得到PID的列表,并为angular-cli杀死了PID,并再次运行“ng-serve”,但仍然给出了相同的端口使用错误。

这是我用来杀死端口4200的进展

sudo kill $(sudo lsof -t -i:4200) 

你也可以试试这个:

 sudo kill `sudo lsof -t -i:4200` 

对于Windows用户:

端口号4200已被使用。 在cmd中键入以下命令:

 netstat -a -n -o 

然后通过在terminal上点击鼠标右键find端口号为4200的端口,单击find,在“find what”中input4200,然后单击“find next”:假设您发现端口号4200被pid 18932使用。 CMD:

 taskkill -f /pid 18932 

administrator身份打开您的cmd.exe

然后findport 4200PID

 netstat -ano | findstr :4200 

港口4200的Pid

这里我有3个PID:

  • 红色的是来自“ng-serve”(127.0.0.1:4200)的LISTENING
  • 绿色的是从“你的浏览器”

杀死只有端口4200(杀死红色PID):

 taskkill /PID 15940 /F 

注意:杀了绿色的只会导致你的浏览器被强制closures。

taskkill pid 15940

现在你可以做“ng-serve”在同一个端口4200上启动你的angular度应用程序




额外的东西:

一个class轮:寻找一种方法来优化这个,这是这个答案的一个class轮的命令:(特别感谢: 何塞普·阿尔西纳这个提示)

 for /f "tokens=5" %a in ('netstat -ano ^| find "4200" ^| find "LISTENING"') do taskkill /f /pid %a 

在Mac OS X上,您需要以下命令:

sudo lsof -t -i tcp:4200 | xargs kill -9

记住你需要用Command + C来杀死Angular的web服务器。

我也面临同样的错误信息,所以我尝试服务 – 端口12012 ,它工作正常。

不是Ctrl + Z,你必须运行停止Ctrl + C它的工作,我检查

当你使用Ctrl+Z ,你将暂停一个正在运行的任务,但不能杀死它。 您稍后可以使用命令fg来恢复任务。 如果你想退出ng serve ,你应该使用Ctrl+C代替,其中也将释放4200端口。

 netstat -anp | grep ":4200" 

这将告诉你谁有端口。

 ng serve --port 4201 --live-reload-port 4200 

并使用localhost:4201访问

这应该是一个临时解决scheme。

我们可以通过下面的命令强制终止端口。

 kill -2 $(lsof -t -i:4200) 

如果您在CMD和IDE中编译angularJS代码,则会发生此问题。 在CMD中,当你在IDE中改变angularJS代码时,你的angularJS代码会自动编译,然后你的IDE想要占用相同的端口,即已经被CMD占用的4200所以,这个问题有一个简单的解决scheme,只需closures你的cmd,同时在IDE中编译你的代码。

每次我必须杀死港口时,我都面临同样的问题。

我试过./node_modules/.bin/ng serve --proxy-config proxy.conf.json --host 0.0.0.0而不是npm start及其作品

试试像这样在不同的端口上运行

 ng serve --port 4201