如果不在当前文件中,VSCode调试器未达到断点

时间:2018-10-12 11:19:27

标签: typescript debugging visual-studio-code vscode-debugger

我希望调试器能够击中断点,无论断点在堆栈中的什么位置。

有2个文件:

start.ts

import { transformString } from './Transform'
transformString('foo')

Transform.ts

export const transformNitroToClip = () => {
  // some code
  => my breakpoint
  // some code
}

使用此配置:

  {
      "type": "node",
      "request": "launch",
      "name": "Single File",
      "args": ["${relativeFile}"],
      "runtimeArgs": [
          "-r",
          "ts-node/register"
      ],
      "cwd": "${workspaceFolder}",
      "internalConsoleOptions": "openOnSessionStart",
      "sourceMaps": true,
      "outFiles": [ "${workspaceRoot}/dist/**/*.js" ]
  }

如果我在start.ts文件中运行调试器,我希望命中Transform.ts的断点,但不会。

但是,如果我先将调试器放入start.ts中,那么也会击中Transform.ts中的调试器。

是否不需要任何解决方法即可在主文件中具有调试器来触发其他文件?

1 个答案:

答案 0 :(得分:0)

我能够重现此行为。它看起来像一个竞争条件:我猜想在加载Transform.ts之前不能设置断点,并且一旦加载Transform.ts时,随着程序的继续执行,VS Code便开始设置断点。如果我将start.ts更改为:

import { transformString } from './Transform'
setTimeout(() => transformString('foo'), 100);

然后一切正常。那可能是一个适当的解决方法。

考虑对this issue进行评论。我想知道是否有一个API,ts-node可用于在加载每个TypeScript文件之后给调试器时间来安装断点。