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 后缀名判断限制代码
Mar 31 NodeJs
nodejs win7下安装方法
May 24 NodeJs
跟我学Nodejs(二)--- Node.js事件模块
May 21 NodeJs
PHP和NodeJs开发的应用如何共用Session
Apr 16 NodeJs
nodejs调用cmd命令实现复制目录
May 04 NodeJs
nodejs简单实现中英文翻译
May 04 NodeJs
nodejs爬虫抓取数据乱码问题总结
Jul 03 NodeJs
图片上传之FileAPI与NodeJs
Jan 24 NodeJs
nodejs入门教程六:express模块用法示例
Apr 24 NodeJs
nodejs批量下载图片的实现方法
May 19 NodeJs
NodeJS收发GET和POST请求的示例代码
Aug 25 NodeJs
nodejs实现简单的gulp打包
Dec 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
PHP初学者头疼问题总结
2006/10/09 PHP
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
JS实现的4种数字千位符格式化方法分享
2015/03/02 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
2016/05/17 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
解决vue项目router切换太慢问题
2020/07/19 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
基于python3实现socket文件传输和校验
2018/07/28 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
python连接mysql数据库并读取数据的实现
2020/09/25 Python
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
大学生职业生涯规划书
2014/03/14 职场文书
教师考核评语
2014/04/28 职场文书
上课不认真检讨书
2014/09/17 职场文书
骨干教师个人总结
2015/02/11 职场文书
护士自我推荐信范文
2015/03/24 职场文书
病房管理制度范本
2015/08/06 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
python可视化之颜色映射详解
2021/09/15 Python
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle
基于redis+lua进行限流的方法
2022/07/23 Redis