🐞小白使用 vscode 调试 axios

前言

以前学习源码,一般都是先把源码大致看一遍,然后如果遇到不清楚的变量或者功能,就会使用 console 来打印输出,优点是打印出来清晰易懂, 缺点就是如果太多的 console,反而会增加阅读成本。所以今天使用 vscode调试 来进行调试,主要目的是用来学习 调试,而非源码

为什么选择 axios 源码呢?

首先因为axios 本身不依赖于前端框架(比如vue/react),是一个比较纯粹的 js 项目

再者是因为 axios 在平时的项目中用的比较多,而且以前也写过关于 axios 的源码,比较了解流程

起步

下载 axios 源码

bash 复制代码
git clone https://github.com/axios/axios.git

如果只想拉取最新一版代码,不需要以前老版本,可以使用:

bash 复制代码
git clone --depth 1 https://github.com/axios/axios.git

下载完毕之后,先看看 readme.md 看看有没有什么关于启动的信息

如果没有,那么需要找到 package.json 文件,找到启动脚本,一般是 dev 或者是 start

如果此时直接启动 npm run start 的话,是启动不了的,我们进入 ./sandbox/server.js 文件中看看它是做了什么

server.js

在 server.js 中使用 http 模块创建了一个服务,然后监听 url的pathname ,通过匹配不同的 pathname调用不同的文件

当你使用 / 访问时,会把pathname 赋值为/index.html,然后后面匹配 /index.html,返回/client.html 文件

在 client.html 文件中,又引用了 axios.js,那么就会发送一个请求,则会匹配到 /axios.js 这个路径,然后返回 ../dist/axios.js

但是没有 ../dist/axios.js 这个文件,甚至没有 dist 这个文件,猜测可能是个打包文件,找到 package.json 中的 打包命令

这个命令使用了 gulp 和 rollup打包工具

其中 gulp clear 是为了清除构建过程中的临时文件和目录

cross-env NODE_ENV = production 将 Node.js 环境变量 NODE_ENV 设置为 production

🔗rollup -c -m 是一个 Rollup 的命令,-c 是表示用配置文件来运行 Rollup,-m 是用来生成 sourcemap

执行命令之后,会生成 dist文件

此时,我们再使用 npm run start 的话,在终端中就可以看到启动成功了!

在浏览器中打开 http://localhost:3000/

至此,axios 终于启动起来了,可以进行调试了

调试准备

在上文中访问 / 时,经过一阵跳转,会加载 ../dist/axios.js 文件

但是这个文件是一个打包后的文件,看右边的代码就知道,虽然可以调试,但是不太方便,我们需要映射到源文件中

为了方便调试,我们可以借助 vscode 调试工具的帮忙

创建一个 launch.json 文件,由于我使用的是 edge 浏览器,所以我选择 edge

使用谷歌浏览器的也可以选择 chrome

创建完毕之后launch.json 默认长这个样子

我们需要对其进行修改

🔗url 要改成你启动服务的端口号,webRoot 是用来解析 sourcemap

点击 运行与调试 按钮

会新出现一个 空白的浏览器 tab(因为request的是launch)

至此,调试准备已经完毕了,可以开始正式调试了

正式调试

那么应该在哪里打断点呢?

这就需要看这个 axios.js 对应的源文件是哪个了,我们知道 rollup 是用了自定义配置文件来打包的,我们找到这个配置文件

rollup.config.js

也就是 ./lib/axios.js 是源文件,所以可以在这个文件打断点,然后执行 F5

axios.js

点击之后,程序会在此处停住,同时在 vscode 会出现一排操作项

从左到右分别是:

  1. 跳转到下个断点
  2. 单行执行(不进入函数)
  3. 单步执行(进入函数内部)
  4. 单步退出(从函数中出来)
  5. 重新执行
  6. 停止调试

优点

当你使用调试工具时,所有变量可以通过 鼠标悬浮 的方式查看

defaults 变量

同时在左侧也可以看到各种变量,也可以添加 监视,来监视某一个变量的变化

如果你不想使用鼠标,也可以使用 调试控制台,只需要在最下方的输入框中输入你想查看的变量即可

结尾

今天分享的是 使用 vscode 调试 axios,通过使用 vscode 的自带的调试工具,确实要比自己打 console 要方便一点,更能看清楚代码流程,如果想要更快的阅读代码,选择调试也是一个不错的选择

相关推荐
Elcker2 小时前
YnuoAgent(依诺):一个 npm 包,跑起属于自己的 AI 研发平台
前端·人工智能·npm
计算机魔术师2 小时前
发现2天,修复2个月:AI挖穿PHP后,卡兹克讲透攻防时间差
前端
风骏时光牛马2 小时前
测试标题001
前端
IT_陈寒3 小时前
Java性能优化完全指南
前端·人工智能·后端
电子IT笔记3 小时前
对接群晖NAS,上传和删除踩坑记录
前端·后端
计算机魔术师3 小时前
半年前说不缺钱,半年后150亿美元超募
前端
用户5708462574403 小时前
自动化发布器里最贵的 Bug:返回成功,但什么都没发生
前端
爱吃馒头不吃辣3 小时前
加一道题,改一天代码:题库即数据的降维打击
前端·架构
aiks_yuan3 小时前
Requestly规则使用技巧:前端联调、接口Mock与网络请求调试实战
前端
程序员老赵3 小时前
Docker 部署 MaxKB:轻松搭建企业级智能体平台
前端·docker·agent