如何在Windows控制台中停止Webpack开发服务器?

20

我在Windows控制台中使用以下命令运行webpack-dev-server:

webpack-dev-server --content-base ./build --inline --hot

然后我会看到消息webpack: bundle is now VALID.,但是我无法在控制台中键入任何内容。但是如果我更改 webpack.config.js 文件,我必须关闭控制台、重新打开并启动webpack-dev-server才能应用我的更改。 如何在不关闭控制台的情况下停止Webpack开发服务器?


我认为这个问题需要一个更好的答案。我也遇到了停止进程的问题。CTRL+C一两次几乎总是会导致孤立的进程,我在Windows和WSL两边都见过这种情况发生。它也不能以一种询问是否终止进程的方式捕捉到CTRL+C。它只是像被强制关闭一样。 - Joshua Dannemann
9个回答

34

只需要按下两次Ctrl+C即可


4
我发现 ctrl+c 无法被识别(尽管在其他地方可以使用),但是双击 ctrl+break 可以正常工作,原因未知。 - Richard Szalay
23
由于某种原因,这个服务器对我仍然在运行,且成为了一个孤立进程。 - the_5imian
2
我通过使用"npm start"命令在npm中运行开发服务器。当我使用CTRL+C终止npm时,出现了相同的问题... webpack开发服务器仍作为一个孤立的进程在后台运行。 - Jason Slobotski
1
CTRL+BREAK对我有效。其他的都卡住了。 - httpete
NPM的CLI运行命令的文档:https://docs.npmjs.com/cli/run-script.html。 它只是说明运行脚本的Shell取决于平台。 我无法通过使用ctrl+c或关闭默认的Windows 10控制台来确认孤立进程的评论。任何一种方法都会终止批处理作业。 ...如果你想活下去,请控制台我。 - Ususipse

20

我通过输入 "npm start" 命令来运行webpack devserver。我发现CTRL+C对我无效,只会创建一个孤立的进程。我可以通过打开任务管理器并结束任何正在运行的node.exe进程来关闭devserver。

另一种方法是从普通的Windows控制台中查找node进程ID并将其终止。

tasklist /FI "IMAGENAME eq node.exe"

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
node.exe                      4620 Console                    2     44,568 K
node.exe                     12452 Console                    2    486,260 K

然后使用以下命令杀死它们。

taskkill /F /PID 4620 /PID 12452

正如评论所指出的,另一种更直接的方法。

taskkill /F /IM node.exe

问题是如何从控制台关闭进程。 - jony89
更新了我的答案,包括Windows控制台指令。 - Jason Slobotski
2
如果你知道没有其他的 node 进程在运行,更直接的方式是执行 "taskkill /F /IM node.exe" 命令。 - mackmack

6

最近在我的Windows机器上,我也遇到了很难杀掉的webpack-dev-server进程。

Ctrl+C/break和关闭都没有用,我很快就厌倦了手动跟踪该进程并结束它。

这个一行命令为我解决了问题:

for /f "tokens=5" %a in ('netstat -aon ^| findstr 8080 ^| findstr LISTENING') do taskkill /pid %a /f

我已经为此创建了一个kill-server.bat文件:

@echo off
for /f "tokens=5" %%a in ('netstat -aon ^| findstr %1 ^| findstr LISTENING') do taskkill /pid %%a /f && echo killed PID %%a

我将其添加到了我的PATH中,现在要关闭使用特定端口的服务器,我只需要执行以下命令:

kill-server 8080

顺便提一下,这个问题似乎只在我使用控制台仿真工具时发生,而不是直接使用Windows命令提示符时发生。


2

在Windows系统中,这个Powershell命令会杀死它(以及所有Node进程!)

get-process node | Stop-Process

需要传入从“get-process node”返回的ID。 - Antfish

1

如何在不关闭控制台的情况下停止webpack开发服务器?

打开任务管理器,关闭任务Node.js: Server-side JavaScript


0
在我的情况下,只需按一次Ctrl+C就足够了。之后,我会得到两个终止作业的提示: 终止批处理作业(Y/N)? ^C终止批处理作业(Y/N)?
确认第一个提示后,会显示一个常规命令提示符。但是我还必须再次输入“Y”并确认,以确认第二个后台作业的终止。否则它将保持孤立。

0

Git Bash似乎存在一个错误,无法正确地将信号发送到节点。

我创建了这个bash脚本:

echo killing process on port $1

taskkill //PID `netstat -aon | grep $1 | grep -P '(?=LISTENING).*' -o -m1 | grep -P '\d*' -o` //F

将其添加到您的PATH

例如,使用kill.sh 8000运行。


0
在我的情况下,CTRL+C 确实关闭了终端上的进程,但当我重新启动服务器时,我会遇到这个问题。
Error: listen EADDRINUSE: address already in use :::*port*

尝试了很多 bash 和 powershell 命令,但似乎没有一个适合 npm 脚本。

最终,我使用了 node 模块 kill-port 并在启动 devServer 之前每次都杀掉端口。

package.json
{
  ...
  "scripts": {
       ...,
       "serve": "npx kill-port 9000 && npm run devServer",
       "devServer": "webpack serve --open --port 9000"
   }
}

-1
  1. 输入Ctrl+C一次。
  2. 当提示终止批处理作业 (Y/N)?时,输入:y

对我来说有效。我已附上屏幕截图。谢谢!命令行截图


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接