参考:https://www.cnblogs.com/it-tsz/p/9022456.html
nestjs 参考:https://github.com/juliandavidmr/awesome-nestjs
vscode 原生支持nodejs的调试,点击Debug图标
进入,齿轮图标打开调试配置: launch.json 
launch.json 文件的配置项如下:可以建多个,最后显示于下拉列表,供选择使用。
name 给这个调试实例取一个名字,
type :debugger 类型 ,Node,Python ,"cppdbg" 。不同语言,使用不同调试器,JS/TS 使用 Node 。
request :两种调试模式,可以为 launch(启动)或attach(附加)。指定开始调试的模式:
launch:在中指定的文件上启动调试器programattach:将调试器附加到已经运行的进程。有关示例,请参阅远程调试。
preLaunchTask 开始调试之前,执行一个任务
postDebugTask 调试结束后,执行一个任务
program :// 将要进行调试的程序的路径
args :// 程序调试时传递给程序的命令行参数,一个数组 [ ] ;
runtimeExecutable : "npm",
runtimeArgs : ["run-script", "debug" ]
env :环境变量,
cwd :// 调试程序时的工作目录,一般为 ${workspaceRoot} 即代码所在目录
指定调试器的当前工作目录,它是代码中使用的任何相对路径的基础文件夹。如果省略,默认为${workspaceFolder}(在VS代码中打开的文件夹)。
作为一个例子,说${workspaceFolder}包含一个py_code文件夹包含app.py,和一个data文件夹包含salaries.csv。如果启动调试器py_code/app.py,则数据文件的相对路径根据以下值而变化cwd:
| CWD | 数据文件的相对路径 |
|---|---|
省略或 ${workspaceFolder} |
data/salaries.csv |
${workspaceFolder}/py_code) |
../data/salaries.csv |
${workspaceFolder}/data |
salaries.csv |
port :调试端口 ,比如:3000
console :使用哪种console,比如 "integratedTerminal"。指定如何显示程序输出。
| 值 | 显示输出的地方 |
|---|---|
"none" |
VS代码 调试控制台 |
"integratedTerminal" (默认) |
VS代码集成终端 |
"externalTerminal" |
独立控制台窗口 |
externalConsole: // 调试时是否显示控制台窗口,一般设置为true显示控制台。
protocol: "inspector",
stopOnEntry 当程序执行,马上break掉
internalConsoleOptions: "neverOpen"
debugServer: for debug extension authors only
===============================
launch.json的配置, 调试 Nestjs :
C:XX ode.exe --nolazy -r ts-node/register --inspect-brk=29685 C:XXhpcorp项目/src/main.ts
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug Nest Framework",
"args": ["${workspaceFolder}/src/main.ts"],
"runtimeArgs": ["--nolazy", "-r", "ts-node/register"],
"sourceMaps": true,
"cwd": "${workspaceFolder}",
"protocol": "inspector",
"console": "integratedTerminal"
}
]
}
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Nest 应用",
"runtimeArgs": [
"--nolazy",
"-r",
"ts-node/register",
],
"args": [
"${workspaceFolder}/src/main.ts"
],
"env": {
"DEBUG": "yuedun:*,-not_this",
"NODE_ENV": "development"
},
"sourceMaps": true,
"cwd": "${workspaceFolder}",
"protocol": "inspector",
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
}
]
}
简化