如何在VSCode中为运行“node”的JavaScript进行调试

4

我正在使用 'node myscript.js' 运行我的JS代码。

而我尝试使用 '运行 -> 启动调试' 在VSCode中进行调试。

我在VSCode中创建了一个工作区,然后看到它创建了一个 launch.js

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "pwa-chrome",
            "request": "launch",
            "name": "Launch Chrome against localhost",
            "url": "http://localhost:8080",
            "webRoot": "${workspaceFolder}"
        }
    ]
}

但调试器失败了

Debugger listening on ws://127.0.0.1:55596/0b6425a4-e21c-47c2-a81d-bb8e43386246
For help, see: https://nodejs.org/en/docs/inspector
Debugger attached.
Waiting for the debugger to disconnect...
Process exited with code 0

我该如何让它正常工作?

我尝试了所有这些配置,但是没有一个能够触发我设置的断点。我可以看到终端中我的Console.log输出的内容。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Attach by Process ID",
            "processId": "${command:PickProcess}",
            "request": "attach",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "type": "pwa-node"
        },
        {
            "name": "Launch via NPM",
            "request": "launch",
            "runtimeArgs": [
                "run-script",
                "debug"
            ],
            "runtimeExecutable": "npm",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "type": "pwa-node"
        },
        {
            "command": "npm start",
            "name": "Run npm start",
            "request": "launch",
            "type": "node-terminal"
        },
        {
            "type": "pwa-chrome",
            "request": "launch",
            "name": "Launch Chrome against localhost",
            "url": "http://localhost:8080",
            "webRoot": "${workspaceFolder}"
        }
    ]

我正在使用“node myscript.js”运行我的JS。您是手动运行它,然后使用启动配置启动它吗?如果是这样,有什么特殊原因吗?您运行node.js应用程序的端口是否与“:8080”冲突?如果您正在手动运行它,可以使用附加而不是启动。 - soulshined
我只想在VS Code中调试一个脚本。我通常通过命令提示符运行它:“node myScript.js”。当我在VS Code中进行调试时,它会要求我提供一个启动配置。我不知道为什么。 - n179911
没错,这就是 vscode 的工作方式,如果你想使用他们的调试器,请查看他们的指南,里面有很多有用的信息 https://code.visualstudio.com/docs/nodejs/nodejs-debugging。我几乎可以肯定这是一个重复的问题,只是在手机上无法查看。 - soulshined
谢谢你的帮助。我确实读了那篇文章。我已经尝试了4个配置,但是没有一个能够触发我设置的JS文件中的断点。 - n179911
我想补充一下,当我运行我的脚本'node myscript.js'时,它没有监听任何端口。我只是运行js并在脚本完成后退出(不到1分钟)。 - n179911
你有一个叫做run-script或debug的脚本吗?我相信那只是他们示例中的样板而已。你应该包括你想要运行的脚本的名称。 - soulshined
1个回答

0

使用pwa-chrome类型进行启动将尝试在Web浏览器中运行您的代码,这不会运行node,因此似乎不是您需要的正确方法,并且以这种方式命中断点更加复杂。我建议改用简单的pwa-node类型启动,因为命中断点非常容易。

您的第一步是阅读VSCode的Node.js调试说明:https://code.visualstudio.com/docs/nodejs/nodejs-debugging

在上述说明中,它建议使用启动类型node,但更近期的说明建议使用pwa-node(请参见此处:What is the pwa-node type launch configuration on VSCode?)。

一个简单的.vscode/launch.json文件,用于调试通过index.js启动的节点应用程序:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "pwa-node",
      "request": "launch",
      "name": "Launch my Node programme",
      "skipFiles": ["<node_internals>/**"],
      "cwd": "${workspaceFolder}",
      "program": "index.js",
      "args": [
        "command-line-arguments",
        "go-here",
      ]
    }
  ]
}

一旦您拥有启动器,您可以在JS中设置断点,然后点击调试按钮。

有关启动配置属性的详细信息可以在此处找到:https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_launch-configuration-attributes


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