VSCode 调试器:在与“npm link”符号链接的 Typescript 包中设置断点

Ben*_*Ben 8 source-maps typescript visual-studio-code npm-link vscode-debugger

我正在尝试调试 NodeJS 应用程序及其与npm link.

结构如下:

/root/package-a # typescript package
/root/package-b # another typescript package
/root/app # NodeJS application
Run Code Online (Sandbox Code Playgroud)

我已将包链接到应用程序,如下所示:

  1. npm link每个包装内
  2. npm link package-a package-b 在应用程序中

然后/root/app/.vscode/launch.json我有:

"runtimeArgs": ["--preserve-symlinks"],
"outFiles": [
  "${workspaceFolder}/build/**/*.js",
  "${workspaceFolder}/../package-a/build/**/*.js",
  "${workspaceFolder}/../package-b/build/**/*.js",
]
Run Code Online (Sandbox Code Playgroud)

当使用 . 构建每个包和应用程序时,这一切都非常有效npm run tsc。同样在监视模式下,更改会正确地从包传播到应用程序。但是,当我尝试在任何包内的 VS Code 中设置断点时,调试器找不到相关的 TS 源。断点保持灰色:-(

红色断点在应用程序中,而灰色断点在包内

另外:我已经设置了每个tsconfig.json文件,因此应用程序和包中的每个构建文件旁边"sourceMap": true都有文件。.js.map

如何正确设置,使包中的断点变成红色?

dan*_*ang 0

  1. launch.json 不应同时具有runtimeArgs 和outFiles。它应该看起来像这样:

     {
       "version": "0.2.0",
        "configurations": [
     {
       "type": "node",
       "request": "launch",
       "sourceMaps": true,
       "smartStep": true,
       "name": "Launch event",
       "program": "${workspaceFolder}/src/services/event/src/start.ts",
       "outputCapture": "std",
       "envFile": "${workspaceFolder}/src/services/event/.env"
     }
    
    Run Code Online (Sandbox Code Playgroud)

    ] }

  2. 确保显示 vscode 符号链接图标(记录器)(在您符号链接的库中):在此输入图像描述

  3. 要进行符号链接,您还可以(记录器):

在此输入图像描述

  1. 最重要的是:您应该构建 npm(在示例中 - 记录器),构建后请确保转到服务(或根)的 node_modules 并查看您的更改是否已构建并且可以在 node_modules 中找到( symlike 应该处理它)

在此输入图像描述