vscode调试node.js的实现方法


Posted in Javascript onMarch 22, 2020

在开发的过程中,几乎不可能一次性就能写出毫无破绽的程序,断点调试代码是一个普遍的需求。

作为前端开发工程师,以往我们开发的JavaScript程序都运行在浏览器端,利用Chrome提供的开发者工具就可以方便的进行源码断点调试。其步骤有四,详情不表,粗略概括如下:

打开Chrome开发者工具;点击进入Sources标签页,在页面的左侧就能看到JS代码的目录;找到需要设置断点的源文件,在需要中断的哪行代码左侧单击鼠标左键,就可以设置断点,如果你的代码是uglify过的,则需导入相应的source-map来映射源码。刷新页面(如果设置断点的位置是一个事件处理函数,则直接触发这个事件即可),代码运行到断点处的时候,程序就会挂起,这时候用鼠标hover就可以查看当前各个变量的数值,并以此判断程序是否正常运行了。

vscode调试node.js的实现方法

但是,当我们用JavaScript开发运行在服务端的Node.js程序时,Chrome开发者工具暂时派不上用场了。虽然也有办法实现在Chrome上调试,不过这不是今天我们讨论的范围。

还有,说用console.log的那位同学,请你先不要说话…

实际上,许多IDE都集成了Debug的功能,包括较新版本的WebStorm就对Node.js调试支持得很好。

但是很多开发人员会觉得IDE太重,有没有更轻量级一些的工具来实现断点调试呢?今天就要给大家安利一下在VScode上进行断点调试的方法。

vscode调试node.js的实现方法

VScode除了out-of-box支持JavaScript和TypeScript,还支持Node.js调试,简直就是为前端工程师而生的,对不对…

要调试Node.js的前提是,你的电脑上已经安装了Node.js的环境。

什么?怎么安装Node.js?给你一点小提示:打开百度,搜索【安装Node.js】,好了,不能提示更多了。

本文以调试express应用为例,并假设您已经安装好了Node.js运行环境。

创建express应用

我们使用express-generator创建一个新的express应用。

1.在全局安装express-generator

a.打开终端,输入: npm install express-generator -g MacBook用户全局安装的时候记得在前面加上sudo

b.安装完成之后,在终端输入 express -v 如果看到下图所示的信息,说明已经安装成功了。

vscode调试node.js的实现方法

2.生成express应用目录,假设这个应用的名称为myapp 在终端输入 express myapp 在当前目录就生成了一个myapp目录,目录结构如下:

vscode调试node.js的实现方法

可以看到,这个小应用已经五脏俱全,有Node服务器配置,公共资源文件夹,师徒文件夹,以及路由配置。

3.运行express应用

a.在终端中输入指令

cd myapp && npm install

就可以进入项目目录并安装所有依赖,这一步可能需要比较长的时间,耐心等待安装完成。

b.然后输入指令

npm start

就可以启动应用。

这时我们在浏览器中访问localhost:3000,即可看到如下页面:

vscode调试node.js的实现方法

这就说明express应用可以正常运行,接下来我们就可以使用VScode调试代码了。

提示:为了避免调试时的端口冲突,我们先回到刚刚运行express应用的终端,ctrl+c关闭正在运行的express应用。

调试express应用

1.进入VScode界面,点击界面左边的第四个类似虫子的按钮,进入调试界面:

vscode调试node.js的实现方法

2.点击页面上方“没有配置”下拉菜单,选择“添加配置”。

vscode调试node.js的实现方法

3.选择Node.js环境。

vscode调试node.js的实现方法

4.选择完成之后,在项目的根目录中会生成一个.vscode的目录,这个目录中存放了各种各样的VScode编辑器的配置。现在这个目录中就包含了一个文件名为lanuch.json的配置文件,配置文件的内容如下:

vscode调试node.js的实现方法

其中最重要的配置项就是“Program”字段,这个字段定义了整个应用的入口,开启调试器的时候会从这个入口启动应用。

我们发现当前这个字段已经有值了,不要慌,那是因为VScode在初始化这个配置文件的时候,会查看package.json中是否有包含了键名为start的scripts,如果有的话,就会把start配置的内容作为“program”字段的值。

5.点击开始调试按钮(绿色三角形),就可以开始调试。这时界面上方就会出现一个调试控制的面板,页面右下方会出现一个调试控制台,可以查看你输出的信息,在界面下放会出现一个状态栏,当前的橘黄色表示应用在正常运行,如下图所示:

vscode调试node.js的实现方法

6.我们再次在浏览中访问localhost:3000,会发现页面可以打开,应用已经正常启动了。

7.接下来我们开始给应用设置断点。我们打开myapp/routes/index.js文件,这个文件配置了应用根路径的路由,当前的处理是返回一个页面,传入字符串"Express"作为视图的参数。

vscode调试node.js的实现方法

8.我们用鼠标在行号6的左边单击左键,就可以设置一个断点。注意,添加断点之前要先关闭调试,关闭的方法是点击界面上方的调试控制面板中的停止按钮(红色正方形)。

vscode调试node.js的实现方法

9.设置完断点之后,重新启动调试,然后在浏览器中访问localhost:3000,这时候,断点的形状发生了变化,程序停留在了断点,调试控制面板的按钮也发生了变化,从左到右依次是单步跳过,单步调试,单步跳出,重启,停止调试。这几个都是常见的断点调试指令。设置完断点之后,重新启动调试,然后在浏览器中访问localhost:3000,这时候,断点的形状发生了变化,程序停留在了断点,调试控制面板的按钮也发生了变化,从左到右依次是单步跳过,单步调试,单步跳出,重启,停止调试。这几个都是常见的断点调试指令。

vscode调试node.js的实现方法

vscode调试node.js的实现方法

10.在界面的左边,可以查看当前上下文环境,也可以设置变量监听。

vscode调试node.js的实现方法

11.将鼠标防止在断点前的变量或者参数上,也可以查看该变量当前的数值,体验与Chrome开发者工具的调试一致。

vscode调试node.js的实现方法

到此这篇关于vscode调试node.js的实现方法的文章就介绍到这了,更多相关vscode调试node.js内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
Dec 02 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
Jan 10 Javascript
javascript设计模式之工厂模式示例讲解
Mar 04 Javascript
基于vue实现分页/翻页组件paginator示例
Mar 09 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
Jun 26 jQuery
react-native DatePicker日期选择组件的实现代码
Sep 12 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
Sep 14 Javascript
vue获取data数据改变前后的值方法
Nov 07 Javascript
详解如何在Javascript和Sass之间共享变量
Nov 13 Javascript
Javascript实现html转pdf高清版(提高分辨率)
Feb 19 Javascript
vue中使用router全局守卫实现页面拦截的示例
Oct 23 Javascript
JavaScript严格模式不支持八进制的问题讲解
Nov 07 Javascript
如何优雅地取消 JavaScript 异步任务
Mar 22 #Javascript
Vue-cli3多页面配置详解
Mar 22 #Javascript
redux处理异步action解决方案
Mar 22 #Javascript
JS+CSS实现3D切割轮播图
Mar 21 #Javascript
vue-autoui自匹配webapi的UI控件的实现
Mar 20 #Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
Mar 20 #jQuery
微信小程序保持session会话的方法
Mar 20 #Javascript
You might like
PHP mkdir()定义和用法
2009/01/14 PHP
PHP获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
js中判断控件是否存在
2010/08/25 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
AngularJS  自定义指令详解及实例代码
2016/09/14 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
jquery自定义显示消息数量
2017/12/19 jQuery
vue源码入口文件分析(推荐)
2018/01/30 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
Vue使用NProgress的操作过程解析
2019/10/10 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
[01:00:04]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第二局
2016/02/26 DOTA
[05:04]DOTA2上海特级锦标赛主赛事第二日TOP10
2016/03/04 DOTA
python 查找文件夹下所有文件 实现代码
2009/07/01 Python
教大家使用Python SqlAlchemy
2016/02/12 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
python调用私有属性的方法总结
2020/07/24 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
服装设计专业求职信
2014/06/16 职场文书
应届大专生自荐书
2014/06/16 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
机票销售员态度不好检讨书
2014/09/27 职场文书
openstack云计算keystone组件工作介绍
2022/04/20 Servers