Vscode下,想要通过debugger来启动一个程序,需要在.vscode/launch.json
文件中的configurations
下,配置一个debugger的具体信息。
如下,configurations
是一个数组,它的每一个元素就是一个debugger。想要让程序以不同的方式启动,就要配置并使用不同的debugger。
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "launch program normally",
"program": "${workspaceFolder}\\index.mjs"
},
{
"type": "node",
"request": "launch",
"name": "通过NPM脚本启动",
"runtimeExecutable": "npm",
"runtimeArgs": [
"run",
"run"
],
"port": 9229
}
]
}
复制代码
怎么添加一个debugger?
不可能要手动打出配置对象的字面量的。vscode提供了快捷方式:
(这张图片是借用vscode官方文档的)
我们只要点击下面的Add Configuration
,在选择我们需要的debugger类型,vscode就会帮我们生成一个半成品debugger配置对象了。
之所以说是半成品,是因为还需要自己配置。
那么,怎么使用一个特定的debugger呢?
只要在这个下拉菜单中,选择对应的debugger就行了。
普通地启动程序的debugger
所谓普通地启动程序。就是通过命令node program.js
这样来启动程序。可见,不需要给命令传递任何参数。
需要的debugger类型是:Node.js Launch program
我们的配置方法是:
- 首先设置debugger的
type:node
这样在启动程序的时候,就会使用node来运行js文件。 - 然后设置debugger的
program
属性的值为要运行的程序的绝对地址。
然后就可以了。
在运行这个debugger的时候,实际执行的命令是:
C:\Program Files\nodejs\node.exe --inspect-brk=31559 index.mjs
复制代码
除了vscode自动加上去的--inspect-brk=31559
,别的都在预料之内:vscode运行了index.mjs
,并且调用了node来运行程序。
在node中,通过运行脚本启动程序的debugger
所谓“通过运行脚本来启动程序”(在这个例子中)就是通过运行npm script来启动程序。
需要用到的debugger类型是:Node.js: Launch via NPM
需要配置的属性有:
-
runtimeExecutable: “要使用的运行时”。这里的值是
npm
。也就是说我们要运行npm这个程序。 -
runtimeArgs:“传递给运行时可执行文件的参数”,值是一个数组,元素是参数,会按照顺序传递给可执行文件。比如说我们希望通过npm脚本
npm run debug
来启动程序,那我们这里就应该设置["run", "debug"]
。 -
port:调试要附加在的端口(?)。我们的npm脚本中,需要针对这一项做相应的设置。这里的值是
9229
如果说package.json中有如下脚本:
"scripts": {
"debug": "node --experimental-modules index.mjs",
}
复制代码
我们想让debugger通过运行这个脚本来启动程序。我们就需要对这个脚本做出修改:
"scripts": {
"debug": "node --nolazy --inspect-brk=9229 --experimental-modules index.mjs",
}
复制代码
然后运行这个debugger,实际执行的命令是:
C:\Program Files\nodejs\npm.cmd run debug
复制代码
程序就会正常运行了
参考
stackoverrun.com/cn/q/118818…
code.visualstudio.com/docs/editor…
初来乍到,欢迎各位批评指教!