在Docker容器和VS代码中调试时,TypeScript断点需要很长时间才能开始命中
我正在使用中的VS代码配方调试Docker容器中的Node.js应用程序。我未对模板中的任何设置进行任何更改,并遵循官方指示:在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秒的时间,设置的断点才会真正开始
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代码调试器并未真正附加,或者至少它不知道它已附加