vscode調試node.js項目一般有三種情況:
1.vscode啟動調試服務端,直接運行要調試的入口文件,開發時比較適合,目前好像只能運行js文件,ts文件可能有點難度
2.遠程調試,需要遠程服務端以調試模式先運行起來,然后本地根據host、post連接遠程調試服務器
3.本地根據進程調試,需要本地服務端先運行起來,然后本地根據進程id附加到指定進行調試,不需要服務端以調試模式運行
vscode中內置了這幾種方式的配置:
1.直接本地以調試模式運行服務端,同時運行調試客戶端連接
直接以node命令運行:
調試運行框->添加配置->Node.js:啟動程序,生成配置如下:
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}\\index.js"
}
其中選項:
type:代表調試環境,node、python、c++等
request:代表行為,launch為直接運行入口文件,attach為附加到遠程調試客戶端,或者附加到本地進程
runtimeExecutable:運行時,即運行的命令,node、nodemon等,type為node時默認為node可以省略
runtimeArgs:運行參數,傳遞給運行時
program:代表運行的腳本
運行調試的輸出:
node --inspect-brk=41886 index.js
Debugger listening on ws://127.0.0.1:41886/44ec2627-9ddf-44a8-8eb5-19389d2b57d5
說明程序以調試模式啟動,且隨機指定了調試端口,而且調試信息以websocket協議傳輸,vscode的調試客戶端就是連接到這個調試端口的
直接以nodemon命令運行:
調試運行框->添加配置->Node.js:Nodemon安裝程序,生成配置如下:
{
"type": "node",
"request": "launch",
"name": "nodemon",
"runtimeExecutable": "nodemon",
"program": "${workspaceFolder}/index.js",
"restart": true,
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
}
看到運行時為nodemon,restart為true,應該為nodemon專屬參數
運行調試的輸出:
[nodemon] starting node --inspect=48487 --debug-brk index.js
Debugger listening on ws://127.0.0.1:48487/60beffd8-d508-4fd4-97e2-1126ce113733
For help see https://nodejs.org/en/docs/inspector
Debugger attached.
nodemon內部執行了相同的node命令
2.附加到遠程服務端調試
調試運行框->添加配置->Node.js:附加到遠程計划,生成配置如下:
{
"type": "node",
"request": "attach",
"name": "Attach to Remote",
"address": "localhost",
"port": 27965,
"localRoot": "${workspaceFolder}",
"remoteRoot": "Absolute path to the remote directory containing the program"
}
最后兩個選項暫時不管,沒用到,主要:
address:遠程調試服務端域名
port:遠程調試端口
啟動調試服務端:
node --inspect-brk=27965 index.js
Debugger listening on ws://127.0.0.1:27965/be5ec018-fa58-4948-9f8d-c648c8f2dc83
For help see https://nodejs.org/en/docs/inspector
啟動調試:
Debugger attached.
說明調試器附加上了
這里還有一些說明:
nodemon啟動調試:
nodemon --inspect-brk=27965
輸出:
[nodemon] starting node --inspect-brk=27965 index.js
Debugger listening on ws://127.0.0.1:27965/14488469-286f-411e-a73a-d49ea5d8effa
For help see https://nodejs.org/en/docs/inspector
說明nodemon命令的調試選項會傳遞給node命令,而默認參數為index.js
3.附加到指定進程調試
調試運行框->添加配置->Node.js:附加到進程,生成配置如下:
{
“type”: “node”,
“request”: “attach”,
“name”: “Attach by Process ID”,
“processId”: “21920”
}
只有一個進程id需要稍微理解一下
啟動項目:
node index.js
運行調試:
Debugger listening on ws://127.0.0.1:9229/6cf17f3e-8844-43eb-b3c4-aab3dd59af8a
For help see https://nodejs.org/en/docs/inspector
Debugger attached.
這里還有最后一個問題:ts項目目前好像不能直接使用ts-node運行進行調試,必須經過index.js
require(‘ts-node/register’);
require(’./src/main’);
即入口文件只能是js,或者說我還不會直接在調試時運行ts