内容简介:Visual Studio Code 前端调试不完全指南
Visual Studio Code(以下简称 vscode) 如今已经代替 Sublime,成为前端工程师们最喜爱的代码编辑器。它作为一个大型的开源项目,不断推陈出新;社区中涌现出大量优质的插件,以支持我们更加舒服地进行开发工作。在近期的工作中,我尝试通过 vscode 来提升调试代码的幸福度,积累了一点点小心得在此与大家分享一下。
接下来的内容将从以下几方面进行展开:
- launch / attach
- 调试前端代码
- 调试通过 Nodemon 启动的 Node 服务器
1. launch / attach
要使用 vscode 的调试功能,首先就得配置 .vscode/launch.json
文件。以最简单的 Node 调试配置为例:
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Launch", "program": "${workspaceRoot}/index.js" }, { "type": "node", "request": "attach", "name": "Attach", "port": 5858 } ] }
其中最重要的参数是 request
,它的取值有两种 launch
和 attach
。
- launch 模式: 由 vscode 来启动 一个独立的具有 debug 模式的程序
- attach 模式:附加于(也可以说“监听”)一个 已经启动的程序 (必须已经开启 Debug 模式)
这两种截然不同的模式到底有什么具体的应用场景呢?且看后文。
2. 调试前端代码
通过 vscode 调试前端代码主要依赖于一个插件: Debugger for Chrome ,该插件主要利用 Chrome 所开放出来的接口 来实现对其渲染的页面进行调试。可以通过 Shift + Cmd + X
打开插件中心,搜索对应插件后直接安装。安装完成并重新加载 vscode 后,可以直接点击调试按钮并创建新的启动配置。如果你之前已经创建过启动配置了,就可以直接打开 .vscode/launch.json
进行修改。
其中调试 Chrome 页面的配置如下所示:
{ "version": "0.2.0", "configurations": [ { "type": "chrome", "request": "launch", "name": "启动一个独立的 Chrome 以调试 frontend", "url": "http://localhost:8091/frontend", "webRoot": "${workspaceRoot}/frontend" } ] }
如之前所述,通过第一个 launch 配置就能启动一个通过 vscode 调试的 Chrome。大家可以直接使用我组织好的项目 zry656565/vscode-debug-sample 进行测试,测试方法在该项目的 README 里面写得很清楚了。简要步骤概括为:
-
npm run frontend
- 启动调试配置:“启动一个独立的 Chrome 以调试 frontend”
- 在
frontend/index.js
中加断点 - 访问
http://localhost:8091/frontend/
延伸问题
使用 launch
模式调试前端代码存在一个问题,就是 vscode 会以新访客的身份打开一个新的 Chrome 进程,也就是说你 之前在 Chrome 上装的插件都没法在这个页面上生效 (如下图所示)。
在这种情况下 attach
模式就有它存在的意义了:对一个已经启动的 Chrome 进行监听调试。
{ "version": "0.2.0", "configurations": [ { "type": "chrome", "request": "attach", "name": "监听一个已经启动调试模式的 Chrome", "port": 9222, "url": "http://localhost:8091/frontend", "webRoot": "${workspaceRoot}/frontend" } ] }
其中 9222 是 Chrome 的调试模式推荐的端口,可以根据需要进行修改。不过目前我并没有成功实施这个设想,对此有兴趣的同学可以从下面这两个链接入手去研究一下:
有一部分遇到的问题可以直接在 Debugger for Chrome 的 FAQ 中得到解答。
3. 调试通过 Nodemon 启动的 Node 服务器
如今,使用 Node 服务器开发一些中间层的服务也慢慢纳入了所谓“大前端”的范畴。而在开发 Node 服务时,我们通常要借助类似于 nodemon 这样的 工具 来避免频繁手动重启服务器。在这种情况下,我们又如何利用 vscode 来进行断点调试呢?先来看看示例配置文件:
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "attach", "name": "附加于已启动的 Node 服务器(debug模式)", "port": 5858, "restart": true }, { "type": "node", "request": "attach", "name": "附加于已启动的 Node 服务器(inspect模式)", "port": 9229, "restart": true } ] }
首先,为了配合 nodemon 在监听到文件修改时重启服务器,此处需要添加一个 restart
参数。同时大家可能注意到了,这里给出了两种模式,大家可能根据以下区别来选择合适自己的协议:
Runtime | ‘Legacy Protocol’ | ‘Inspector Protocol’ |
---|---|---|
io.js | all | no |
node.js | < 8.x | >= 6.3 (Windows: >= 6.9) |
Electron | all | not yet |
Chakra | all | not yet |
通俗来说,旧版 Node (< 6.3) 推荐使用 Legacy Protocol ( --debug
模式,默认 5858 端口),而新版的 Node (>= 6.3) 推荐使用 Inspector Protocol ( --inspect
模式,默认 9229 端口)。
需要注意的是,在启动 nodemon 程序时,也要添加对应的参数,比如:
nodemon --debug server/app.js nodemon --inspect server/app.js
详细的例子同样可以在 zry656565/vscode-debug-sample 中找到。
参考资料
- VS Code - Debugger for Chrome - README
- Debugging in VS Code
- Chrome DevTools Protocol Viewer
- bdspen/nodemon_vscode
- Node.js Debugging in VS Code
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 前端小纠结--VS Code调试配置分享
- 构建基于 iOS 模拟器的前端调试方案
- vConsole 3.2.2 发布,手机前端开发调试利器
- vConsole 3.3.0 发布,手机前端开发调试利器
- 前端技术观察(第 11 期):解密 VS Code 断点调试的原理
- 前端程序员不知道的14个JavaScript调试技巧,你知道几个?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
第一行代码:Android(第2版)
郭霖 / 人民邮电出版社 / 2016-12-1 / CNY 79.00
本书被广大Android 开发者誉为“Android 学习第一书”。全书系统全面、循序渐进地介绍了Android软件开发的必备知识、经验和技巧。 第2版基于Android 7.0 对第1 版进行了全面更新,将所有知识点都在最新的Android 系统上进行重新适配,使用 全新的Android Studio 开发工具代替之前的Eclipse,并添加了对Material Design、运行时权限、......一起来看看 《第一行代码:Android(第2版)》 这本书的介绍吧!