使用 vscode 调试 npm 脚本的正确方法是啥?

Posted

技术标签:

【中文标题】使用 vscode 调试 npm 脚本的正确方法是啥?【英文标题】:What is the proper way to debug an npm script using vscode?使用 vscode 调试 npm 脚本的正确方法是什么? 【发布时间】:2017-08-29 19:54:03 【问题描述】:

我有一个正在尝试调试的 npm 脚本。我使用 vscode,所以我想我会创建一个调试配置并使用调试器逐步完成它。

我的 npm 脚本外观是:

"scripts": 
    ...
    "dev": "node tasks/runner.js",

所以我创建了以下调试配置:


    "version": "0.2.0",
    "configurations": [
        
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "runtimeExecutable": "npm",
            "cwd": "$workspaceRoot",
            "runtimeArgs": [
                "run", "dev"
            ],
            "port": 5858,
            "stopOnEntry": true
        
    ]

当我触发它时,脚本会运行,但 vscode 永远无法连接,我收到错误:

无法通过“旧”协议连接到运行时;考虑使用“inspector”协议(10000 毫秒后超时)。

我尝试添加检查器协议:

       
            "type": "node",
            "request": "attach",
            "name": "Attach (Inspector Protocol)",
            "port": 9229,
            "protocol": "inspector"
       

并通过以下方式运行 npm 脚本:

npm run dev --inspect

这次我得到了错误:

确保使用 --inspect 启动节点。无法连接到运行时进程,10000 毫秒后超时 - (原因:无法连接到目标:连接 ECONNREFUSED 127.0.0.1:9229)。

我不确定我缺少哪一部分。

编辑每个重复的标签

我看到另一个问题是:通过 vscode 调试 npm 脚本,但其他问题和答案中的详细信息并不那么详细和具体。如果有人正在搜索我遇到的特定 vscode 错误消息或我拥有的配置类型,他们不一定会得到这个问题选择的答案给出的级别答案详细信息。

【问题讨论】:

How to debug using npm run scripts from VSCode?的可能重复 同意重复,我在那个帖子上推荐这个答案:***.com/a/68959015/3144603。 VScode 现在已经内置了对调试 npm 脚本的支持。 【参考方案1】:

您不应该尝试调试npm script,因为您真正想要的是将调试器附加到使用 npm run 命令启动的脚本(这里的 NPM 仅用作任务运行器)。


  "version": "0.2.0",
  "configurations": [
      
        "type": "node",
        "request": "launch",
        "name": "Launch Program",
        "program": "$workspaceRoot/tasks/runner.js"
      
  ]

如果你真的想使用 npm 脚本运行它,那么你可以使用以下配置:


  "type": "node",
  "request": "launch",
  "name": "Launch via NPM",
  "runtimeExecutable": "npm",
  "windows": 
    "runtimeExecutable": "npm.cmd"
  ,
  "runtimeArgs": [
    "run-script",
    "dev"
  ],
  "port": 5858

但您还必须change您的脚本命令(指定调试端口)

  "scripts": 
    "dev": "node --nolazy --debug-brk=5858 tasks/runner.js"
  ,

您只需单击齿轮图标并选择一个即可探索各种调试配置。

有关 Node.js 调试的更多信息,请参阅VS Code documentation。

【讨论】:

太棒了!感谢您的回复和详细的回答。我很感激。 弃用警告:node --debugnode --debug-brk 无效。请改用node --inspectnode --inspect-brk。与新版本中的新 --inspect-brk 一起使用

以上是关于使用 vscode 调试 npm 脚本的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用来自 VSCode 的 npm run 脚本进行调试?

.env 使用 vscode 和 dotenv npm 调试断点

vscode下搭建typescript时提示"无法将“npm”项识别为 cmdlet函数脚本文件或可运行程序的名称"错误的解决方法

vscode调试npm包技巧

有没有办法在用 Vite 启动的 VsCode 中调试代码?

通过 npm 脚本从 Powershell 使用 --collectCoverageFrom 运行 Jest 测试时,转义引号和斜杠的正确方法是啥?