如何使用 ts-node-dev 和正确的行号在 Visual Studio Code 中调试 Typescript 代码

303*_*303 19 node.js source-maps typescript visual-studio-code

我有一个 Typescript 项目,启动方式如下:

ts-node-dev  --preserve-symlinks --inspect=0.0.0.0  -- src/server.ts
Run Code Online (Sandbox Code Playgroud)

我可以使用 Visual Studio Code 对其进行调试,但调试器在错误的行处中断。我能想到的唯一合理的解释是 ts-node-dev 没有将调试器指向源映射(在那里)。

如何正确调试 ts-node-dev 执行的 Typescript 代码?

HDM*_*M91 11

使用 ts-node-dev 在 VS Code 中进行调试的配置,以附加和启动调试器:

包.json:

{
  "scripts": {
    "dev:debug": "ts-node-dev --transpile-only --respawn --inspect=4321 --project tsconfig.dev.json src/server.ts",
    "dev": "ts-node-dev --transpile-only --respawn --project tsconfig.dev.json src/server.ts",
  }
}
Run Code Online (Sandbox Code Playgroud)

启动.json:

{
  "version": "0.1.0",
  "configurations": [
    {
      "type": "node",
      "request": "attach",
      "name": "Attach to dev:debug",
      "protocol": "inspector",
      "port": 4321,
      "restart": true,
      "cwd": "${workspaceRoot}"
    },
    {
      "type": "node",
      "request": "launch",
      "name": "Debug",
      "protocol": "inspector",
      "cwd": "${workspaceRoot}",
      "runtimeExecutable": "npm",
      "runtimeArgs": ["run-script", "dev"]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*ave 6

我有同样的问题,这让我看到了这篇(旧的)帖子。我在https://gist.github.com/cecilemuller/2963155d0f249c1544289b78a1cdd695找到了我的问题的解决方案,因此我将其发布在这里,以防其他人发现自己在这里!

此 VS Code 配置允许我在 TypeScript 代码中正确行的断点处停止:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Example",
      "type": "node",
      "request": "launch",
      "runtimeExecutable": "node",
      "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"],

      "args": ["src/script.ts", "--example", "hello"],
      
      "cwd": "${workspaceRoot}",
      "internalConsoleOptions": "openOnSessionStart",
      "skipFiles": ["<node_internals>/**", "node_modules/**"]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)