之前工作中的调试都是在浏览器中打断点,debugger,几乎很少在vscode中调试过代码,主要原因是需要自己去配置调试功能(懒癌晚期。。。),没有浏览器直接上手简单,粗暴。但是最近开始接触了Node后端服务,没有页面可以去调试,只能通过IDE去调试。那就来搞一下吧。
目前市面上IDE很多,像webstorm,vscode等,就我们今天说的调试功能webstrom就可以直接调试,服务跑起来,在需要调试的地方打上断点,再去访问接口就能直接debug进来了,那为什么还要使用vscode呢,既不能直接调试,又要去辛苦的配置,一个字 穷,webtorm是收费的,而vscode是完全免费的。就这一个就让我爱上了vscode了。
闲话说多了,开始我们今天的主题,使用vscode调试代码并没有想象中的那么复杂,只需要打开左侧菜单栏的调试菜单就可以开启vscode代码调试的大门了。
然后你就可以看到代码调试的功能区了,这里vscode也给你做了足够多的操作提示,开启调试的前提是创建一个名字叫launch.json的文件,它里面包含了调试配置的各个参数,初始化的配置很简单,它会根据你选择的调试环境来生成相应的配置文件。
// chrome环境
{
"version": "0.2.0",
"configurations": [
{
"type": "pwa-chrome", // 启动配置的调试器类型
"request": "launch", // 启动配置的请求类型。
"name": "Launch Chrome against localhost", // 显示在调试启动配置下拉列表中的易于阅读的名称
"url": "http://localhost:8080", // 本地服务的启动地址
"webRoot": "${workspaceFolder}" // 项目的根路径
}
]
}
上面是选择Chrome浏览器环境生成的配置文件。因为我要调试的NodeJS,所以选择了Node环境
// NodeJS环境
{
"version": "0.2.0",
"configurations": [
{
"type": "pwa-node",
"request": "launch",
"name": "Launch Program",
"skipFiles": [ // 跳过的文件,比如一下node的依赖文件,或者node_modules包的代码
"<node_internals>/**"
],
"program": "${file}" // node的启动文件路径
}
]
}
相比之下其实并没有太多不同,简单配置之后就能愉快的调试了。
还有一些其他的属性可以按需配置
program- 启动调试器时要运行的可执行文件或文件args- 传递给程序以进行调试的参数cwd- 用于查找依赖项和其他文件的当前工作目录port- 附加到正在运行的进程时的端口stopOnEntry- 程序启动时立即中断console-什么样的控制台来使用,例如internalConsole,integratedTerminal或externalTerminal
本以为就这样愉快的结束了,但是当我去启动的时候却报错了,一看报错,原来是当下的node服务启动的时候需要去根据运行时的环境读取对应的配置文件,之间本地启动之前都是事先手动设置的set ENV=dev,那是否也可以在命令行事先设置呢,去尝试了下,因为开启调试,vscode会自动在终端重新打开一个新的窗口,不会使用之前已经存在的,那我们设置的环境变量就没有用了,那该怎么办呢???
遇事不绝问度娘,通过跟度娘的一番深入交谈以后我,发现可以通过新增一个env的配置来设置启动时候的环境变量,也可以使用envFile配置来读取项目配置的环境变量文件,不要太方便...
//...
"envFile": "${workspaceFolder}/.env",
"env": { "USER": "john doe" }
//...
设置完之后,我的Node服务调试就启动起来了,设置的断点也可以正常debug了,真香!!!
总结
vscode的调试功能还是很香的,今后这块可以熟练的使用起来了,不需要在来回的切换编辑器和浏览器了,
附上今天读到的一段话
滚石不生苔,流水不生蠹。忙,才能发挥生命的力量,忙,才能是我们身心灵活起来,经云:“若行者之心数数懈废,譬如钻火,未热而熄,虽欲得火,火难可得。” 又说:“人所欲为,譬如穿池,凿之不止,比得泉水。”
坚持就是胜利,你的努力从来都不会辜负你自己。
参考文献:code.visualstudio.com/docs/editor…
\