【问题标题】:How can I stop webpack dev server from windows console?如何从 Windows 控制台停止 webpack 开发服务器?
【发布时间】:2016-08-23 15:03:49
【问题描述】:

我使用以下命令从 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。它就像被强行关闭一样。

标签: javascript webpack webpack-dev-server windows-console


【解决方案1】:

在我的情况下,CTRL+C 确实关闭了终端上的进程,但是当我重新启动服务器时,我曾经得到

Error: listen EADDRINUSE: address already in use :::*port*

尝试了很多 bash 和 powershell 命令,但似乎没有任何东西适合 npm 脚本。

所以最后,我使用了节点模块kill-port,并且每次都在启动 devServer 之前终止了端口。

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

【讨论】:

    【解决方案2】:

    我通过发出“npm start”命令来运行 webpack devserver。我发现 CTRL+C 对我不起作用,只会创建一个孤立的进程。我可以通过打开任务管理器并终止所有正在运行的 node.exe 进程来终止开发服务器。

    从普通的 jane windows 控制台执行此操作的另一种方法是找到节点进程 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
    

    【讨论】:

    • 问题是如何从控制台关闭进程
    • 更新了我的答案以包含 Windows 控制台说明
    • 如果您知道没有其他节点进程正在运行,则更简单的是“taskkill /F /IM node.exe”
    【解决方案3】:

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

    进入任务管理器并关闭任务Node.js: Server-side JavaScript

    【讨论】:

      【解决方案4】:
      1. 键入:Ctrl+C 一次。
      2. 当提示 Terminate batch job (Y/N)? 输入:y

      为我工作。我已附上截图 谢谢! command line screenshot

      【讨论】:

        【解决方案5】:

        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 为例。

        【讨论】:

          【解决方案6】:

          在 Windows 上,这个 Powershell 似乎可以杀死它(以及所有 Node 进程!)

          get-process node | Stop-Process
          

          【讨论】:

          • 需要传入“get-process node”返回的ID
          【解决方案7】:

          在我的情况下,按一次 Ctrl+C 就足够了。之后,我收到两个终止工作的提示: 终止批处理作业(是/否)? ^C终止批处理作业 (Y/N)?

          确认第一个后,会显示常规命令提示符。但是我必须再次写下“Y”并确认,这确认了第二个后台作业终止。否则它将保持孤立状态。

          【讨论】:

            【解决方案8】:

            我最近也在我的 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 命令提示符时。

            【讨论】:

              【解决方案9】:

              你只需要按两次Ctrl+C

              【讨论】:

              • 我发现,由于未知原因,ctrl+c 未被识别(尽管在其他地方工作),但 ctrl+break 两次工作正常。
              • 由于某种原因,这个服务器仍然为我运行,并且是一个孤立的进程。
              • 我使用“npm start”通过 npm 运行开发服务器。当我用 CTRL+C 杀死 npm 时,我遇到了同样的问题...... webpack devserver 仍然作为孤立进程在后台运行。
              • CTRL+BREAK 对我有用。其他所有东西都挂紧了。
              • NPM 的 CLI 运行命令的文档:docs.npmjs.com/cli/run-script.html __ 它只是说运行脚本的 shell 依赖于平台。我无法通过使用 ctrl+c 或关闭默认的 Windows 10 控制台来确认孤立进程注释。执行任一操作都会终止批处理作业。 ...如果你想活下去,请安慰我
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-02-05
              • 2015-01-19
              • 2018-03-02
              • 2022-07-12
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多