(注:我的具体使用情况看起来很复杂,但基本思想是不是!)VSCode - 如何使用启动配置调试启动自己的调试器的节点程序?
我有启动泊坞容器,它本身包含并开始使用Nodemon
启动另一个咕嘟咕嘟脚本咕嘟咕嘟脚本调试模式下的最终节点脚本!该Nodemon咕嘟咕嘟脚本运行里面的泊坞容器看起来是这样的:
nodemon({
"script": `start.js`,
"nodeArgs": [`--debug=0.0.0.0:5858`, "-nolazy"],
"ext": "js",
"restartable": true
});
我希望能够在Visual Studio代码按[F5]
,都最终脚本起步,并没有VSCode的调试器连接到它!
什么确实工作:
如果我手动启动第一咕嘟咕嘟脚本,在终端,泊坞窗容器启动时,与Nodemon其他嵌入式咕嘟咕嘟脚本执行和最终的脚本启动。我可以然后按[F5]
VSCode启动attach
启动配置,我可以调试!端口5858
由Docker公开,一切正常。
我想什么:
我希望能够跳过脚本的手动启动的终端。我想要一个VSCode启动配置,它可以自行完成所有操作=>在VSCode集成终端中启动脚本,并将调试器附加到脚本本身启动的调试过程中。
我试图:
与
preLaunchTask
任务的"request": "attach"
启动配置。该任务正在启动第一个Gulp脚本。这种方法的问题是,任务永远不会结束:它启动终端中的第一个脚本(该任务有一个“"_runner": "terminal"
”),但最终脚本正在侦听并且不会退出(它实际上是侦听请求)...这似乎阻止VSCode调试器启动,因为任务永远不会退出。A
"request": "launch"
启动启动第一个脚本的配置。但是在这里,即使它看起来正常工作(出现橙色的调试条),调试也不会实际工作。如果我理解正确,这是因为启动配置本身(在指定的端口上)启动节点调试器,因此在Docker容器内由Nodemon启动的调试器将永远不会被侦听。
换句话说:我只是想打[F5]
这样一个脚本在综合终端推出,无需调试,然后VSCode将一个调试器附加到所产生的127.0.0.1:5858
调试过程中,wathever怎么这个过程实际上是开始。
更新:我也有一个建议,在Github上关于尝试使用compound
启动配置,但它也不起作用:https://github.com/Microsoft/vscode/issues/36685
调试器仍然没有踢...我的'启动配置':https://pastebin.com/raw/RBSJu0kx和我的'tasks.json':https://pastebin.com/raw/WnacJZp5。应用程序可以正常启动,但只有在终端中手动退出应用程序时调试器才会启动......任何想法?谢谢你的帮助! – electrotype
我懂了! :-)你的例子的问题似乎是'“startsPattern”'。如果我使用'“activeOnStart”:false',然后'“startsPattern”:“调试过程即将开始时的一些模式”,它就起作用了!请修改您的答案,我会接受它! – electrotype
我剩下的唯一问题是,如果发生更改并且Nodemon重新加载在Docker中运行的应用程序,则VSCode的调试器将停止,但在尝试重新挂接时过早超时('“restart”:true')...在调试过程之前超时实际上在Docker中重新启动。如果你有任何想法来解决这个问题,我全是耳朵! – electrotype