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的前后端分离的思考与实践(四)安全问题解决方案
Sep 26 NodeJs
nodejs实现获取某宝商品分类
May 28 NodeJs
Nodejs全局安装和本地安装的不同之处
Jul 04 NodeJs
搭建简单的nodejs http服务器详解
Mar 09 NodeJs
nodejs学习笔记之路由
Mar 27 NodeJs
解析NodeJS异步I/O的实现
Apr 13 NodeJs
深入理解nodejs中Express的中间件
May 19 NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
nodejs前端模板引擎swig入门详解
May 15 NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 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
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
JS截取字符串常用方法整理及使用示例
2013/10/18 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
JavaScript 32位整型无符号操作示例
2013/12/08 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
axios学习教程全攻略
2017/03/26 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
JavaScript之RegExp_动力节点Java学院整理
2017/06/29 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
Python进行数据科学工作的简单入门教程
2015/04/01 Python
python使用threading获取线程函数返回值的实现方法
2017/11/15 Python
解决.ui文件生成的.py文件运行不出现界面的方法
2019/06/19 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
2020/05/23 Python
Python如何实现FTP功能
2020/05/28 Python
pandas分批读取大数据集教程
2020/06/06 Python
Html5页面二次分享的实现
2018/07/30 HTML / CSS
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
小学二年级评语
2014/04/21 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
自我查摆剖析材料
2014/10/11 职场文书
党校党性分析材料
2014/12/19 职场文书
奖金申请报告模板
2015/05/15 职场文书
网聊搭讪开场白
2015/05/28 职场文书
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
Vue.Draggable实现交换位置
2022/04/07 Vue.js