nodejs各种姿势断点调试的方法


Posted in NodeJs onJune 18, 2020

nodejs开启debug模式通过传递参数 --inspect 或 --inspect-brk ,调试方法分为IDE和chrome devtools两种,下面就具体讲解这两种方式如何调试node程序;

part1:VS Code调试:

 一、launch.json 配置

配置详解看另一篇:VSCode launch.json配置详解

1 nodejs调试:

1.1 点击添加配置文件

nodejs各种姿势断点调试的方法 

我们看到 .vscode/launch.json的configurations.program属性为 "${workspaceFolder}/express-app.js" ,表示调试的入口文件,其中 workspaceFolder

是vscode资源管理器的根目录

nodejs各种姿势断点调试的方法

1.2 启动调试

点击绿色箭头,启动调试

nodejs各种姿势断点调试的方法 

2. 调试npm scripts

在实际项目中,命令基本上都是放到了npm scritps中 ps: 注意调试npm scripts时参数 --inspect 必须指定端口

2.1 添加npm scripts

{
 ...
 "scripts": {
 ...
 "debug": "node --inspect-brk=6666 index.js"
 },
 ...
}

6666是任意指定的调试端口号。

2.2 修改vscode调试配置

打开 .vscode/launch.json 删除 program 属性 增加以下3个配置项, runtimeExecutable,runtimeArgs,port

{
 ...
 "configurations": [
 {
 ...
 "runtimeExecutable": "npm", //默认是node,这里改成npm
 "runtimeArgs": [
 "run-script",//别名 run
 "debug"//对应上npm scripts上的debug
 ],
 "port": 6666 //调试端口
 }
 ]
}

2.3 启动调试

启动调试方法同上

3. 调试非node命令

 3.1 node_modules/.bin

npm run 会自动添加 node_module/.bin 到当前命令所用的PATH变量中,例如:

{
 ...
 "scripts": {
 "build": "webpack"
 },
 ...
}

运行 npm run build 实际上是调用 node_modules/.bin/webpack 而运行 node_modules/.bin/webpack 实际上会根据当前shell环境调用对应脚本,查看可以发现有3个同名不同后缀名的脚本: webpack(标注了可执行程序sh) 、 webpack.cmd 、webpack.ps1 例如在cmd命令行工具下会调用 webpack.cmd 脚本,查看代码可以发现内部实际上是调用命令:

node ./node_modules/webpack/bin/webpack.js

3.2 不能直接加 --inspect-brk

这种情况下,直接加 --inspect-brk=6666 是不行的 以下配置,会自动执行npm run debug,但不会进入断点。

{
 ...
 "scripts": {
 "debug": "webpack --inspect-brk=6666"
 },
 ...
}

3.3 转换成node调用

修改npm scripts:

{
 ...
 "scripts": {
 "debug": "node --inspect-brk=6666 ./node_modules/webpack/bin/webpack.js"
 },
 ...
}

启动成功!

3.4 stopOnEntry

设置 configurations.stopOnEntry=true ,启动调试后,断点可以自动停在第一行代码上

二、attach 附加到node.js

1. Auto Attach 自动附加无需配置,快速开始调试

打开用户设置,修改 "debug.node.autoAttach": "on" ,开启自动附加

nodejs各种姿势断点调试的方法 

vscode集成终端输入 node --inspect-brk index.js

自动进入vscode的debug模式;

2. 设置“附加”配置

跟自动附加相比,可以显式配置各种调试配置选项,示例配置如下:

{
 "name": "Attach to Process",
 "type": "node",
 "request": "attach",
 "processId": "${command:PickProcess}"
 },

启动步骤:

1.命令行以debug模式运行nodejs程序

node --inspect-brk index.js

2.选择并运行附加配置

nodejs各种姿势断点调试的方法

3. 选择要附加的进程 ,开启调试

nodejs各种姿势断点调试的方法 

part2: Chrome DevTools调试:

Chrome DevTools是nodejs天生支持的调试方式,使用步骤:

1.命令行以debug模式运行nodejs程序

node --inspect-brk index.js

2.打开谷歌浏览器,访问 chrome://inspect/#devices ,可以看到当前浏览器监听的所有 inspect 3.点击下图红框内的超链接,会打开Chrome DevTools面板,就可以使用他的各种功能

nodejs各种姿势断点调试的方法

vscode远程调试插件:Remote Development

总结

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

NodeJs 相关文章推荐
nodejs通过phantomjs实现下载网页
May 04 NodeJs
nodejs修复ipa处理过的png图片
Feb 17 NodeJs
nodeJs爬虫获取数据简单实现代码
Mar 29 NodeJs
nodejs的HTML分析利器node-jquery用法浅析
Nov 08 NodeJs
NodeJS遍历文件生产文件列表功能示例
Jan 22 NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 NodeJs
nodejs操作mysql实现增删改查的实例
May 28 NodeJs
详解Nodejs之静态资源处理
Jun 05 NodeJs
CentOS 安装NodeJS V8.0.0的方法
Jun 15 NodeJs
NodeJS简单实现WebSocket功能示例
Feb 10 NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 21 NodeJs
在NodeJs中使用node-schedule增加定时器任务的方法
Jun 08 #NodeJs
nodeJS与MySQL实现分页数据以及倒序数据
Jun 05 #NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 #NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 #NodeJs
Nodejs实现WebSocket代码实例
May 19 #NodeJs
Nodejs文件上传、监听上传进度的代码
Mar 27 #NodeJs
nodejs如何在package.json中设置多条启动命令
Mar 16 #NodeJs
You might like
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
Thinkphp5 自定义上传文件名的实现方法
2019/07/23 PHP
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
2020/12/31 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
Python yield使用方法示例
2013/12/04 Python
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
python如果快速判断数字奇数偶数
2019/11/13 Python
pandas数据拼接的实现示例
2020/04/16 Python
python实现扫雷小游戏
2020/04/24 Python
Selenium元素定位的30种方式(史上最全)
2020/05/11 Python
Python通过类的组合模拟街道红绿灯
2020/09/16 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
Vrbo英国:预订度假屋
2020/08/19 全球购物
怎样声明一个匿名的内部类
2016/06/01 面试题
大学军训决心书
2015/02/05 职场文书
文艺节目主持词
2015/07/06 职场文书
2015毕业设计工作总结
2015/07/24 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书