运行ng serve命令时,“端口4200已被使用”


179

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

我能够运行命令“ ng serve”,效果很好。我想阻止它运行,所以我运行了“ Control Z”。

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

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


我是一个终身的Windows开发人员,最近几个月我在Mac上度过,并训练自己使用CMD +Z。由于我默认使用CTRL + Z而不是CTRL + C
所以

如果您正在使用Visual Studio代码,请关闭它并重新启动它。
Kurkula

Answers:


323

这就是我用来终止4200端口上的进度的原因

对于linux用户:

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

您也可以尝试以下方法:

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

对于Windows用户:

端口号4200已在使用中。以管理员身份打开cmd。在cmd中键入以下命令:

netstat -a -n -o

然后,右键单击终端,找到端口号为4200的端口,然后单击查找,在“ find what”中输入4200,然后单击“ find next”:假设您发现pid 18932使用了端口号4200。命令:

taskkill -f /pid 18932

对于UNIX:

alias ngf='kill -9  $(lsof -t -i:4200);ng serve'

现在,从项目文件夹的终端中运行ngf(而不是ng serve)。这将使用端口4200终止所有进程,并运行Angular项目。


3
虽然我意识到这是正确的解决方案,但这似乎不是一个可怕的解决方案吗?如果我想ng serve在其他目录上运行怎么办?这样杀死服务器然后在其他地方重新启动服务器没有意义,还是我丢失了某些东西?
内森·邓恩

6
您可以通过以下方式指定其他端口: --port <new_port>
estellezg

4
这将终止默认浏览器。并没有帮助。
shijin

7
这确实谋杀了我的浏览器窗口。我终于想通了...我已经^Z在使用默认端口的现有角度实例上做了一个,愚蠢的我!
quietContest

1
要快速检查哪个pid在Windows中使用端口4200,请使用netstat -a -n -o | findstr 4200
penta '18

185

打开您的cmd.exeas administrator

然后找到PIDport 4200

netstat -ano | findstr :4200

端口4200的PID

在这里我有3 PID:

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

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

taskkill /PID 15940 /F

注意:杀死绿色的仅会导致您的浏览器被强行关闭。

taskkill pid 15940

现在,您可以执行“ ng-serve”以在同一端口4200上启动角度应用程序




其他资料:

一线:在寻找一种优化方法之后,这是此答案的单线命令:(特别感谢:约瑟夫·阿尔西纳Josep Alsina)提供了这些提示)

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

2
请记住,这样做的cmd,没有Git Bash
Leo

2
Windows上用于GitBash的Syntsax netstat -ano | findstr:4200; taskkill -PID <builtedPID> -F
intotecho

更新Git Bash解决了我的问题
Ismail Farooq,

89

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

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

请记住,您需要使用Command + C杀死Angular的Web服务器。


也曾在Ubuntu中工作过。
Becario Senior

2
command + C是杀死任何进程的关键。我自己和其他开发人员急于按Command + z,这只是挂起了进程而不是杀死进程。
贾斯梅特

2
@jasmeet按下Command + Z也让我有很多次!
朱利安·弗雷泽


16

使用以下命令杀死ng:

pkill -9 ng

3
我在Ubuntu 18.04上使用了它。它闪烁了屏幕,并带我去ubuntu登录,杀死了所有应用程序
srv_sud

这杀死了所有其他应用程序。但是最终对我有用..谢谢
Sakthikanth

13

ng serve --port <YOUR_GIVEN_PORT_NUMBER>

您应该尝试使用上述命令在给定的端口上运行。


在Ubuntu 18行之有效
马克Odey

11

使用时Ctrl+Z,您将挂起正在运行的任务,但不会杀死它。您以后可以使用命令fg来恢复任务。如果要退出ng serve,则应Ctrl+C改用,它还会释放4200端口。


7

现在,您可以设置--port 0免费端口。

ng serve --port 0 // will get a free port for you

在这种情况下,请不要忘记使用该--open标志,否则您将不知道从哪个端口启动。
rplaurindo

1
码头告诉我它选择了哪个端口。对于Windows用户,这应该是正确的答案。
罗恩


6

对于Windows:

打开命令提示符

类型: netstat -a -o -n

找到您要终止的进程的PID。

类型: taskkill /F /PID 16876

这个16876-是我要杀死的进程的PID-在这种情况下,进程是4200-检查附件。您可以提供任何端口号。

在此处输入图片说明

现在,键入:ng serve在同一端口4200上启动您的角度应用程序


5

我正在共享这个,因为在我的mac上无法执行的两个命令没有完成这项工作:

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

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

可以进行以下操作,但是如果您在Visual Code中使用集成终端,请尝试使用计算机终端并添加fowling命令:

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

感谢它为我工作,以上所有答案对我都不起作用,就像在Ubuntu OS中使用VScode终端一样。
SURENDRANATH S

4
netstat -anp | grep ":4200"

这将告诉您谁拥有港口。


是-anp吗?那什么也没返回,所以我只是添加了一个空格,因为您的命令要求输入“ nestat:option需要一个参数--p”
peztherez 16/08/23

您的netstat必须与我的不同。也许添加一个OS标签。
约书亚

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

和访问使用 localhost:4201

这应该是一个临时解决方案。

要么

尝试使用列出端口使用情况,
lsof -i:4200
并使用手动将其杀死
sudo kill -9 <Process PID using port 4200>


4

总之,有多种解决方案:1)通过使用另一个端口来定义端口号,

ng serve --open --port 4201

2)通过杀死进程

ctrl + c // for kill
Close all node terminal which is related for running the app.

3)类型

netstat -a -n -o

在命令提示符下,然后找到相关的端口PID并通过杀死它

taskkill /F /PID (pid number)

4)类型 netstat -ano|findstr :4200

接收包含端口号的外部地址PID,然后通过杀死它

taskkill /PID (pid number)/F


4

要停止在Windows中运行的所有本地端口,请单独使用此简单注释,而不要使用netstat分别搜索pid,

它找到所有的pid并停止当前正在运行的本地端口,

taskkill /im node.exe /f

对Windows中的角度4有用:)
Icarus

3

只需重新启动您正在使用的IDE,即可正常工作。


3

使用ctrl + z可以将程序放在后台。在Linux上,您可以使用以下命令将会话恢复为前台:

fg ng serve

您无需取消该过程。



2

就我而言,上述所有方法均无效。

UBUNTU 18.04版本

下面的命令起作用了。

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

2

如果使用的是VSCode,则可以选择终止终端并添加新终端。关闭选项卡,然后打开一个新选项卡。它为我工作。

编辑:使用ctrl + c并按y。如果没有终止终端,则可以继续。如果要打开Visual Studio的新实例并运行其他应用程序,则可以使用ng serve --port 4401。


2

Ubuntu OS中的VScode终端使用以下命令杀死进程

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

1

您也可以尝试在Visual Studio代码中运行您的应用程序-:

ng serve --open --port 4201

您可以提供任何端口号。


1

它表示已经在使用端口号4200运行服务,请使用另一个端口而不是4200。下面的命令可以解决该问题

ng服务-端口4300




1

不必终止整个过程或使用它ctrl+z,您可以简单地ctrl+c用来停止服务器,并可以愉快地使用ng serve command而无需任何服务,errors或者如果您想在其他端口上运行,则只需使用此命令ng serve --port portno(ex: ng serve --port 4201)


1

对于Ubndu 18.04 sudo lsof -t -i tcp:3000 | xargs杀死-9

它发生在端口未成功终止时,因此此命令将终止它4200或3000或3300 any



0

如果您同时在CMD和IDE中编译角度JS代码,则会发生此问题。在CMD中,只要在IDE中更改您的角度JS代码,然后您的IDE想要占用相同的端口(即4200已被CMD占用),您的角度JS代码就会自动编译,因此,有一个简单的解决方案,只需关闭您的在IDE中编译代码时使用cmd。


0

每当我不得不杀死端口时,我都面临着同样的问题。

我尝试了./node_modules/.bin/ng serve --proxy-config proxy.conf.json --host 0.0.0.0代替而不是npm start它的作品

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.