跳到主要内容

2 篇博文 含有标签「React」

查看所有标签

· 阅读需 5 分钟
熊滔

使用 Vite 创建 React 项目,并且在 WebStorm 中调试 React 源码,效果如下:

可以直接调试源码,而不只是打包后的产物。

构建 React 源码

为了做到能够直接调试源码,而不是压缩、混肴的产物,我们需要自己构建 React 源码,并且生成 sourcemap 文件。

sourcemap(源映射)是一个文件,它提供了一种将压缩、合并或经过其他转换后的代码(如在生产环境中使用的代码)映射回原始源代码的方式。当 JavaScript 代码经过构建工具(如 Webpack、Rollup 等)处理后,代码可能会被压缩、丑化(变量名缩短等操作)或者合并成一个文件,这使得调试变得困难,因为调试工具显示的是转换后的代码,而不是开发人员编写的原始代码。

下载源码

git clone git@github.com:facebook/react.git

由于 React 最新的构建结果和之前不同,和找到的参考资料不一样,因此需要 reset 到之前的 commit 进行构建

git reset --hard 80f3d88190c07c2da11b5cac58a44c3b90fbc296

安装依赖

npm install

由于 React 构建脚本依赖于 Java,因此需要确保 Java 环境已准备就绪

前往 Oracle 官网下载

然后一直下一步就行,安装完成后不用手动设置环境变量,在命令行输入 java -version 即可验证是否安装成功

为了生成 sourcemap 文件,需要修改构建脚本的配置,脚本位于 scripts/rollup/build.js 中,首先需要将 sourcemap 为 true

这时如果直接运行构建脚本 npm run build,会发现报错

上述问题是因为构建的过程中会进行多次转换,会生成多次 sourcemap,然后把 sourcemap 串联起来就是最终的 sourcemap。如果中间有一步转换没有生成 sourcemap,那就断掉了,也就没法把 sourcemap 串联起来了。

这个问题的解决只要找出没有生成 sourcemap 的那几个插件注释掉就可以了

再次运行 npm run build 就可以正常构建了

构建完成后,可以在 build/node_modules 下面看到构建的产物,可以看到生成了 sourcemap 文件

我们把 reactreact-dom 链接到全局,方便我们在项目中引用调试

cd build/node_modules/react
npm link

cd ../react-dom
npm link

创建 React 项目并调试

使用 Vite 创建一个 React 项目

npm create vite@latest

进入项目,安装依赖

cd react-debug
npm install

这里不使用安装的 reactreact-dom,而是使用本地构建好并 link 到全局的包

npm link react
npm link react-dom

为了方便的在 WebStorm 中进行调试,需要进行一些配置,首先点击顶部栏的 Current File,打开一个下拉框,选择 Edit Configurations

会弹出一个配置管理弹窗,点击左上角的 + 并选择 JavaScript Debug

编辑调试配置,Name 就是该调试的名称,URL 就是前端项目的启动地址,这里使用的 Vite,默认启动在 http://localhost:5173

编辑完成后,启动项目

npm run dev

点击小虫的调试按钮

WebStorm 会自动打开一个 Chrome 页面

可以添加一个断点,给标题添加一个点击事件并添加断点

点击标题,这时会发现程序断住了,可以在 WebStorm 界面可以查看调用栈,变量等信息

参考