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实现PHP的print_r函数代码
Mar 14 NodeJs
nodejs的10个性能优化技巧
Jul 15 NodeJs
nodejs中简单实现Javascript Promise机制的实例
Dec 06 NodeJs
Nodejs实现批量下载妹纸图
May 28 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
深入理解Nodejs Global 模块
Jun 03 NodeJs
nodejs利用ajax实现网页无刷新上传图片实例代码
Jun 06 NodeJs
docker中编译nodejs并使用nginx启动
Jun 23 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
nodejs+mongodb aggregate级联查询操作示例
Mar 17 NodeJs
nodejs读取并去重excel文件
Apr 22 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 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 filter_var() 函数 Filter 函数
2012/04/25 PHP
PHP文件操作详解
2016/12/30 PHP
JavaScript事件列表解说
2006/12/22 Javascript
事件绑定之小测试  onclick && addEventListener
2011/07/31 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
使用JavaScript实现一个小程序之99乘法表
2017/09/21 Javascript
jquery中有哪些api jQuery主要API
2017/11/20 jQuery
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
2018/08/17 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
[01:44]Ti10举办地公布
2019/08/25 DOTA
Python中使用Inotify监控文件实例
2015/02/14 Python
wxPython的安装图文教程(Windows)
2017/12/28 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
python绘制圆柱体的方法
2018/07/02 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
python 输出所有大小写字母的方法
2019/01/02 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
Django rstful登陆认证并检查session是否过期代码实例
2019/08/13 Python
python中如何打包用户自定义模块
2020/09/23 Python
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
Brasty波兰:香水、化妆品、手表网上商店
2019/04/15 全球购物
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
关于学习的演讲稿
2014/05/10 职场文书
社会实践活动报告
2015/02/05 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫