【问题标题】:VsCode debugger not hitting breakpoint if is not in the current file如果不在当前文件中,VsCode 调试器不会命中断点
【发布时间】:2019-03-17 14:52:50
【问题描述】:

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

有 2 个文件:

start.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 的调试器也会被命中。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-03-09
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多