我正在学习angular 2,这是我第一次使用angular CLI项目创建一个沙盒项目。

我能够运行命令“ng serve”,它工作得很好。我想让它停止运行,所以我运行了“控制Z”。

当我再次尝试运行“ng-serve”命令时,它提示我“端口4200已被使用”。

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


当前回答

ng serve --open 

分配一个本地主机来承载项目。在同一个目录下运行相同的命令时,系统会在端口已经被使用的地方分配localhost:port。要覆盖这个问题,可以很容易地运行以下命令:

ng serve --port

这将为项目分配一个新的端口,而不会干扰当前的本地主机端口。

其他回答

使用这个命令杀死ng:

pkill -9 ng

终止进程并关闭你在该端口上运行应用程序的终端。

netstat -anp | grep ":4200"

这会告诉你谁得到了端口。

以管理员身份打开cmd.exe,

然后找到4200端口的PID

netstat -ano | findstr :4200

这里我有3个PID:

红色的来自“ng-serve”(127.0.0.1:4200) 绿色的来自"your browser"

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

taskkill /PID 15940 /F

注意:杀死绿色只会导致你的浏览器被强制关闭。

现在你可以使用ng-serve在4200端口上启动angular应用




附加内容:

一行:在寻找优化的方法之后,下面是这个答案的一行命令:(特别感谢:Josep Alsina提供的提示)

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

在我的Ubuntu上,我输入了crl+z来关闭终端,之后我无法访问localhost:4200。唯一的解决办法是:

$ sudo fuser -k 4200/tcp

然后重新启动服务器。