我可以 运行 并在 VSCode 中调试 deno 项目吗?

Can I run and debug deno project in VSCode?

我是 typescript 和 deno 的新手,也是 vscode。

首先,我用 vscode 试了一下,但失败了,然后用 IntelliJ 试了一下。 我可以 运行 并使用 deno 插件在 Intellij 中调试简单的 .ts 文件。

但我想知道如何在 vscode 中执行此操作(还安装了 deno 插件,https://marketplace.visualstudio.com/items?itemName=denoland.vscode-deno)。

我的设置是...

.vscode/settings.json

{
    "deno.enable": true,
    "deno.lint": true,
    "deno.unstable": true
}

.vscode/launch.json

{
    // 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": [
        {
            "request": "launch",
            "name": "Launch Program",
            "type": "pwa-node",
            "program": "${workspaceFolder}/main.ts",
            "cwd": "${workspaceFolder}",
            "runtimeExecutable": "deno",
            "runtimeArgs": [
                "run",
                "--unstable",
                "--inspect",
                "--allow-all"
            ],
            "attachSimplePort": 9229
        }
    ]
}

示例代码

console.log("Hello, World!");

当我 运行 使用 Run without Debugging
只显示如下图,但预计输出 Hello, World!.
而且似乎调试也不起作用。

请帮忙。

使用 --inspect 调试对相对较短的程序不起作用,因为它不等待调试器连接。所以当运行短节目the execution finishes before VS Code connects to the inspector。在较大的程序中,这不会成为问题。

为了调试只有几行长的 Deno 程序,给出了两个选项 in this thread:

  • 使用 --inspect-brk 而不是 --inspect,这应该允许调试器有足够的时间连接和命中断点
  • 调试时在代码中加入一些延时,例如:
const _sleep = async () => {
  await new Promise(resolve => setTimeout(resolve, 2000));
}
await _sleep();

console.log("Hello World!"); <-- Here, you could add a breakpoint

到 运行 无需调试,您也可以添加 --inspect-brk,但您必须在会话开始后按 F5 或单击 'Continue'。或者,您可以使用 --inspect 并添加 sleep 函数