运行 ng serve 命令时“端口 4200 已在使用中”

Posted

技术标签:

【中文标题】运行 ng serve 命令时“端口 4200 已在使用中”【英文标题】:"Port 4200 is already in use" when running the ng serve command 【发布时间】:2016-12-29 17:24:16 【问题描述】:

我正在学习 Angular 2,并且第一次使用 Angular CLI 项目来创建沙盒项目。

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

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

我运行“PS”以获取 PID 列表并终止 Angular-cli 的 PID,然后再次运行“ng-serve”,但它仍然给出相同的端口正在使用错误。

【问题讨论】:

一个终生的 Windows 开发人员我在 Mac 上度过了过去几个月,并训练自己使用 CMD + Z。我开始在 Windows 上遇到这个问题,因为我默认使用 CTRL + Z CTRL+C 如果您正在使用 Visual Studio 代码,请将其关闭并重新启动。 您可以通过检查您正在使用的操作系统的必要命令来终止在此端口中运行的进程,或者您可以在另一个端口中运行项目:) npx kill-port 4200 【参考方案1】:
netstat -anp | grep ":4200"

这会告诉你谁拥有端口。

【讨论】:

是 - anp 吗?什么也没返回,所以我只是添加了一个空格,因为您的命令要求“nestat:选项需要一个参数--p” 您的 netstat 必须与我的不同。也许添加一个操作系统标签。【参考方案2】:

这是我用来杀死端口 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的端口,点击查找,在“查找内容”中输入4200,点击“查找下一个”: 假设您发现 pid 18932 使用了端口号 4200。在 cmd 中键入以下命令:

taskkill -f /pid 18932

对于 UNIX:

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

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

【讨论】:

虽然我意识到这是正确的解决方案,但这似乎不是一个可怕的解决方案?如果我想在不同的目录上运行ng serve 怎么办?以这种方式杀死服务器然后在其他地方重新启动它是没有意义的,还是我错过了什么? 您可以指定不同的端口:--port <new_port> 这会杀死默认浏览器。而且没有帮助。 这确实谋杀了我的浏览器窗口。不过我最终想通了……我在一个使用默认端口的现有角度实例上做了一个^Z,我真傻! 要快速检查 Windows 中哪个 pid 正在使用端口 4200,请使用 netstat -a -n -o | findstr 4200【参考方案3】:

不是 ctrl+Z, 你必须运行停止 ctrl+C

【讨论】:

迄今为止最简单的问题解决方案,即使在技术上它不响应 OP 问题 这是该问题最相关的答案【参考方案4】:

我也遇到了同样的错误消息,所以我尝试了 ng serve --port 12012 并且效果很好。

【讨论】:

我们不能每次都增加新的端口。 谁支持这样的答案?【参考方案5】:

打开您的cmd.exeadministrator

然后找到port 4200PID

netstat -ano | findstr :4200

这里我有 3 个 PID:

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

只杀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

【讨论】:

记得在cmd,而不是Git Bash Windows 上 GitBash 的语法发现str:4200; taskkill -PID -F 更新 GIt Bash 解决了我的问题 必须选择此作为答案。谢谢。【参考方案6】:

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

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

请记住,您需要使用 Command+C 来终止 Angular 的 Web 服务器。

【讨论】:

也在 Ubuntu 中工作过。 command + C 是杀死任何进程的关键。我和其他开发人员匆忙按下 command+z,它只是暂停进程而不是杀死它。 @jasmeet 按下 Command+Z 也得到了我很多次!【参考方案7】:
ng serve --port 4201 --live-reload-port 4200

并使用localhost:4201访问

这应该可以作为临时解决方案。

尝试使用lsof -i:4200列出端口使用情况 并使用sudo kill -9 <Process PID using port 4200>

手动杀死它

【讨论】:

【参考方案8】:

我们可以通过以下命令强行杀死端口。

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

【讨论】:

【参考方案9】:

如果您在 CMD 和 IDE 中编译 Angular JS 代码,则会出现此问题。在 CMD 中,每当您在 IDE 中更改 Angular JS 代码时,您的 Angular JS 代码都会自动编译,然后您的 IDE 想要占用相同的端口,即 4200 已经被 CMD 占用 所以,这个问题有一个简单的解决方案,只需在 IDE 中编译代码时关闭 cmd。

【讨论】:

【参考方案10】:

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

【讨论】:

不是真的,至少不是在 Mac 上 这很完美。不确定它是否适用于所有情况,但在我的情况下这是最简单的解决方案【参考方案11】:

每次我不得不终止端口时,我都面临同样的问题。

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

【讨论】:

【参考方案12】:

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

ng serve --open --port 4201

你可以给任何端口号。

【讨论】:

【参考方案13】:

最简单的一行命令:

 sudo fuser -k 4200/tcp

【讨论】:

【参考方案14】:

对于 Windows:

打开命令提示符

输入:netstat -a -o -n

找到你想杀死的进程的PID。

输入:taskkill /F /PID 16876

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

现在,输入:ng serve 在同一个端口 4200 启动您的 Angular 应用

【讨论】:

【参考方案15】:

在 linux mint 17 上,这是有效的。

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

【讨论】:

【参考方案16】:

可以更改.angular-cli 文件中的端口。例如:

"defaults": 
    "styleExt": "css",
    "component": ,
    "serve": 
      "port": 4205
    
  

另外,需要将此添加到您的package.json

"ng": "ng",
"start": "ng serve"

【讨论】:

【参考方案17】:

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

ng 服务 --port 4300

【讨论】:

【参考方案18】:

不用杀死整个进程或使用ctrl+z,你可以简单地使用ctrl+c来停止服务器,并且可以愉快地使用ng serve command而不需要任何errors,或者如果你想在不同的端口上运行,只需使用这个命令ng serve --port portno(ex: ng serve --port 4201).

【讨论】:

【参考方案19】:
Port 4200 is already in use. Use '--port' to specify a different port

这意味着您已经在端口 4200 上运行了另一个服务。如果是这种情况 你可以。关闭其他服务。运行 ng 时使用 --port 标志 像这样服务:

 ng serve --port 9001

另外需要注意的是,在某些机器上,域 localhost 可能不起作用。 您可能会看到一组数字,例如 127.0.0.1。当你运行 ng serve 它应该显示 您正在运行服务器的 URL,因此请务必阅读您机器上的消息 找到您的确切开发 URL。

【讨论】:

【参考方案20】:

如果是Linux操作系统,可以使用 fuser -k 4200/tcp

【讨论】:

【参考方案21】:

杀死进程并关闭您用于在该端口上运行应用程序的终端。

【讨论】:

【参考方案22】:

ng serve --port 122345 对我来说很好用。

【讨论】:

【参考方案23】:

netstat -plnet

tcp 0 0 127.0.0.1:4200 0.0.0.0:* LISTEN 1001 63955 7077/ng

杀死 -9 7077

再次开始您的 ng 服务。

【讨论】:

虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!【参考方案24】:

使用这个命令杀死ng:

pkill -9 ng

【讨论】:

我在我的 ubuntu 18.04 上使用了它。它闪过我的屏幕并带我进入 ubuntu 登录杀死所有应用程序 这会杀死所有其他应用程序。但最终对我有用..谢谢【参考方案25】:

在 Windows 中;在运行 ng serve 的命令提示符中,只需单击并按键:

ctrl + c

它会问你:Terminate batch job (Y/N)? 然后你输入Y

【讨论】:

为什么这在 VSCode 中不起作用?我一直在输入 ctrl + c 并且它确实重复了目录路径提示。谢谢。 @Chris22 先点击VScode底部的命令区,选中该区域,然后按ctr + c 我在 VSCode 终端中键入 CTRL + C,但这并没有退出在端口 4200 上运行的服务器。它只是复制了提示。【参考方案26】:

作为任何更改后的第一步,我使用ng build,然后是ng serve。它可以正常工作。

【讨论】:

【参考方案27】:

ng serve --port <YOUR_GIVEN_PORT_NUMBER>

你应该尝试上面的命令在你给定的端口上运行。

【讨论】:

在 ubuntu 18 上运行良好。【参考方案28】:

唯一对我有用的是重新启动我的系统/设备...

使用 JetBrains 的 Webstorm IDE。

【讨论】:

【参考方案29】:

只需重新启动您正在使用的 IDE,即可运行。

【讨论】:

【参考方案30】:

访问本地主机之外的项目

例子:

ng serve --host 192.168.2.2:7006

【讨论】:

以上是关于运行 ng serve 命令时“端口 4200 已在使用中”的主要内容,如果未能解决你的问题,请参考以下文章

我无法在终端中运行 ng serve 命令

ng serve 命令不起作用 角度 5

ng serve 命令需要在 Angular 项目中运行,但找不到项目定义

构建 Angular 8 项目时出现空白页面,但使用“ng serve”可以完美运行

如何在使用ng build而不是ng serve时运行webpack?

启动我的项目时出错(运行 ng serve 后)