🐞小白使用 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 中的 打包命令

这个命令使用了 gulprollup打包工具

其中 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 要方便一点,更能看清楚代码流程,如果想要更快的阅读代码,选择调试也是一个不错的选择

相关推荐
前端啵啵猪7 小时前
useCallback 和 useMemo,什么时候用才是有效的?
前端·react.js
星哥说事8 小时前
跨平台开源笔记神器,用DeepSeek写笔记 , 效率翻倍
前端
喜欢你,还有大家8 小时前
FTP文件传输服务
linux·运维·服务器·前端
该用户已不存在8 小时前
你没有听说过的7个Windows开发必备工具
前端·windows·后端
Bi8 小时前
Dokploy安装和部署项目流程
运维·前端
普通网友8 小时前
前端安全攻防:XSS, CSRF 等防范与检测
前端·安全·xss
携欢8 小时前
PortSwigger靶场之Reflected XSS into attribute with angle brackets HTML-encoded通关秘籍
前端·xss
小爱同学_8 小时前
React知识:useState和useRef的使用
前端·react.js
再学一点就睡9 小时前
双 Token 认证机制:从原理到实践的完整实现
前端·javascript·后端
wallflower20209 小时前
滑动窗口算法在前端开发中的探索与应用
前端·算法