在 VS Code 中调试 TypeScript 改为进入 JavaScript

Le *_*ush 7 typescript visual-studio-code

我正在尝试使用以下 launch.json 在 VS Code 中调试我的 typescript NodeJs 应用程序:

   {
   "version": "0.2.0",
      "configurations": [
         {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${workspaceFolder}/apps/file-server-app/app.ts",
            "outFiles": [
                "${workspaceFolder}/build/**/*.js"
            ],            
            "runtimeArgs": [
                "--require", 
                "ts-node/register"
            ]
        }
      ]
   }
Run Code Online (Sandbox Code Playgroud)

应用程序启动正常,除了断点之外,一切都正常工作。我将断点放置在 Typescript 代码中,而不是在实际行上停止,而是在已编译的 Javascript 等效项中的行上中断。

我尝试过的事情:

  • 启用源映射并确保它们正确生成
  • 启用内联源映射并确保它们正确生成
  • 在新设置上重新安装所有内容

附加信息:

VSCode Version: 1.46.1
TypeScript Version: 3.8.3
Run Code Online (Sandbox Code Playgroud)

Sim*_*cos 6

事实证明这是 VS Code 的设计初衷。

要修复它,您可以:

  • 在 launch.json 中将其设置outFiles为空数组,以便不会发现源映射并且不会发生路径重定向。
  • 或者删除 ts-node 并调试编译的文件,或者使用 ts-node 而不手动编译它们。

有关更多详细信息,请参阅此 github 问题: https://github.com/microsoft/vscode/issues/101927


Le *_*ush 2

显然,启用allowjs中的设置tsconfig.json并编译 typescript 会使 VS Code 调试器进入 Javascript 文件而不是 Typescript 文件。目前,即使这意味着您在编译打字稿时无法错误检查您的 javascript 文件,解决方法是allowjs通过将其设置为false如下所示来禁用该设置:

"compilerOptions": {
    //"allowJs": true
}
Run Code Online (Sandbox Code Playgroud)