在Docker容器和VS代码中调试时,TypeScript断点需要很长时间才能开始命中

在Docker容器和VS代码中调试时,TypeScript断点需要很长时间才能开始命中,typescript,docker,debugging,visual-studio-code,remote-debugging,Typescript,Docker,Debugging,Visual Studio Code,Remote Debugging,我正在使用中的VS代码配方调试Docker容器中的Node.js应用程序。我未对模板中的任何设置进行任何更改,并遵循官方指示: git clone https://github.com/Microsoft/vscode-recipes.git cd vscode-recipes/Docker-TypeScript npm install code . 当我在Docker中启动调试器,并在index.ts文件中设置断点时,在看到附加的调试器。消息后,需要63-68秒的时间,设置的断点才会真正开始

我正在使用中的VS代码配方调试Docker容器中的Node.js应用程序。我未对模板中的任何设置进行任何更改,并遵循官方指示:

git clone https://github.com/Microsoft/vscode-recipes.git
cd vscode-recipes/Docker-TypeScript
npm install
code .
当我在Docker中启动调试器,并在
index.ts
文件中设置断点时,在看到附加的
调试器。
消息后,需要63-68秒的时间,设置的断点才会真正开始命中。然后我可以设置其他断点,它们都可以正常工作。但是,如果我对文件进行更改并保存,这将导致调试器重置连接,并且我必须再次等待30秒到2分钟,然后断点才开始再次命中

我已经尝试了一个不同的项目,我看到了相同的行为。如果我在Docker容器外部调试,断点会立即命中。这让我觉得它和Docker的某些东西有某种联系

有人见过这个吗?有什么建议吗

我正在跑步:

Docker Desktop on a Mac  v2.2.0.5 (43884)
VS Code                  v1.44.2
macOS                    10.14.6 (cannot upgrade - work machine)

我可以通过更改
launch.json
中的
timeout
值来纠正这个问题

{
      "type": "node",
      "request": "launch",
      "name": "Launch in Docker",
      "preLaunchTask": "tsc-watch",
      "protocol": "auto",
      "runtimeExecutable": "npm",
      "runtimeArgs": [ "run", "docker-debug" ],
      "port": 5858,
      "restart": true,
      "timeout": 60000,
      "localRoot": "${workspaceFolder}/dist",
      "remoteRoot": "/server/dist",
      "outFiles": [
        "${workspaceFolder}/dist/**/*"
      ],
      "trace": true,
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen"
    }
timeout
指的是在连接到Node.js的毫秒数内重试
。默认值为10000毫秒。
。然而,它似乎并不像预期的那样工作。它似乎在等待这么长的时间来再次检查它是否连接到调试器

所以
“超时”:“60000”
意味着如果调试器无法立即连接,它将等待整整一分钟再重试

一旦我将该值更改为
3000
,断点就会更快地到达。该值应足够长,以便启动容器和tsc watch任务,否则会出现调试器无法连接的错误

如果在尝试调试器之前启动容器,则可以避免这种情况

我仍然无法解释的是为什么它会说
调试器已附加。
,但VS代码调试器并未真正附加,或者至少它不知道它已附加