0

无论断点在堆栈中的哪个位置,我都希望调试器能够命中断点。

有2个文件:

开始.ts

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

变换.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被命中。

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

4

1 回答 1

0

我能够重现这种行为。它看起来像一个竞争条件:我假设断点在加载之前无法设置Transform.ts,并且一旦Transform.ts加载,VS Code 就会在程序继续执行时竞相设置断点。如果我start.ts改为:

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

然后一切正常。这可能是一个足够的解决方法。

考虑对此问题发表评论。我想知道是否有一个 APIts-node可以让调试器在加载每个 TypeScript 文件后有时间安装断点。

于 2018-10-12T14:42:12.567 回答