vscode http post_VS Code 调试完全攻略(5):基于浏览器的 React 应用

每日前端夜话第344篇

翻译:疯狂的技术宅

作者:Charles Szilagyi

来源:charlesagile

d47a0e08fe34c907edcf30f7e02999cc.gif

正文共:1750 字

预计阅读时间:7 分钟

ec3d35d94ec70cd74152d191346868af.png

这次我们来研究怎样把调试器连接到用 Create React App 生成的 React 程序。你将看到如何从 VS Code 启动浏览器并检查远程异步 API 调用。它超级强大,同时又很容易,所以在调试 CRA 和 React 程序时没有理由不这样做。

c8b6e1d148ff72b18f8ae0cdf7bae727.png

VS Code 调试完全攻略系列目录

a767462f4e8c6f2cd8805a1825c9949c.png
  1. 基础知识(点击直达)
  2. 步进逐行调试(点击直达)

  3. 编辑变量并重新执行函数(点击直达)

  4. launch.json 和调试控制台(点击直达)

  5. 基于浏览器的 React 应用(?  本文)

  6. 调试用 TypeScript 开发并打包的 React  ?

代码设置

为了加快速度,我准备了一个简单的 React 应用,你要做的就是检出代码并启动 CRA 开发服务器:

1git clone git@github.com:thekarel/debug-anything.git
2cd debug-anything/react-cra
3yarn # npm i
4yarn start # npm start

应该能在控制台中看到启动成功的消息:

1Compiled successfully!
2
3You can now view react-cra in the browser.
4
5  Local:            http://localhost:3000
6  On Your Network:  http://192.168.0.4:3000
7
8Note that the development build is not optimized.
9To create a production build, use yarn build.

创建 launch.json

我们需要为这个小项目创建一个 launch.json。请参阅 [VS Code 调试完全攻略(4):launch.json 和调试控制台](https://charlesagile.com/vscode-launch-json-and-the-debug-console)获取更多详细信息。

代码中已经包含了这个配置文件。尽管非常简单,但还是逐行介绍一下,确保你能够了解它都做了些什么事。打开 .vscode/launch.json

a8005318d9e6ccd571f80a28f44f8766.png

launch.json

看一下第 8 至 12 行:

1{
2    "type": "chrome",
3    "request": "launch",
4    "name": "Debug CRA web app in Chrome",
5    "url": "http://localhost:3000",
6    "webRoot": "${workspaceFolder}/react-cra"
7}

type:把调试器类型设置为 chrome,这意味着我们将在此配置中使用 Chrome 浏览器。我们之前用过的另一种类型是 node,通过安装扩展可以得到更多其他类型。顺便说一下,还有一个为 Firefox? 准备的插件

每个调试器 type 都有其特定的配置,所以请试着用 VS Code 随附的便捷自动完成功能。

request:被设置的 launch 选项意味着我们将会启动浏览器进行调试,并将加载下面指定的地址。它与你手动执行的操作并没有太大区别,但是会自动为你执行代码。另一种可能性是 attach 到已经运行的调试服务器,这在当前的配置下是不可能的。最后,当你停止调试会话时,VS Code 会负责关闭 Chrome。

name:你喜欢的任何名称,它将显示在调试工具栏中:

b54a72a3d2d0c473f973a99d42d7fe5e.png

name

url:浏览器将要加载的URL——必须与运行 CRA 开发服务器的 URL 相匹配!

webRoot:项目源文件的路径。不幸的是,Source map 在 CRA 开发模式下并不可靠*。

CRA 调试秘诀

那么怎样才能把这些都联系在一起呢?调试过程由以下步骤组成。

首先,你可以用 npm start 在控制台中启动开发服务器,顺便说一下,这也可以在 VS Code 中完成。

76b51bd7e337393739e8cdd94ce35886.png

启动脚本

接下来,从调试侧边栏中或通过按 F5 键启动调试浏览器:

b9a7b2449fa71faa9f9bafd7fbe6dc97.gif

启动浏览器

像往常一样向代码添加断点:

d749cdc16f98f43b876ba4d5ea49dc50.png

断点

然后在调试浏览器中与网站进行交互,但是这次启用了调试功能?让我们来看看在示例程序中成功的 fetch 是什么样子的:

3e31bf4a964a306c6ed468e3e99f715f.gif

success debug

可以通过使用工具栏中的 “restart” 来重新启动会话并使应用恢复到原始状态:

2b61e235f673757230bc42709eac359d.gif

restart debug

你可能想知道,这是否会比在“普通的” Chrome 中打开页面并使用 dev tools 更好?在这种情况下差异并不大。但是一个明显的好处是,即使关闭浏览器或退出代码,也可以保留断点。这也适用于监视表达式!说到监视表达式。。。

彩蛋:添加监视表达式

我们已经学会了怎样检查和编辑局部变量。转到变量部分并查看其值是可行的。不过当你要处理复杂的对象时,重复打开嵌套结构会变得很烦人。

VS Code 提供了一个更舒适的解决方案:你可以设置 监视表达式,该表达式会在每个调试步骤中重新评估。甚至可以用点符号来查询嵌套属性(例如post.title)。

确保在调试侧栏中打开了 Watch,并添加了一些表达式:

79a44d82ac61a4664c4a74d304a72f0e.gif

添加监视表达式

让我们尝试 fetch 一个存在的内容,并留意表达式:

b54c3e48a46648f3cbf4c3bbc0d39b4a.gif

通过这些表达式,也很容易检查出问题的路径,这次注意 error

10ff7ad0186a4722150842d2ba37846e.gif

你可能已经猜到了,上面所用到的方法适用于任何基于浏览器的应用。在这种情况下,要做的设置大致如下:

  • 启动开发服务器

  • 通过配置你的 launch.json 在调试浏览器中打开应用

  • 在源代码中设置断点

  • 当你需要反复检查同一属性时,可以设置监视表达式

  • 用 step 命令检查代码流

  • 重新启动函数或整个应用

原文链接

https://charlesagile.com/debug-create-react-app

 605467219fd6b2c6611eb0701cb85c24.gif

e14cb52540f17bc52f2931c08f3aeb80.gif

c637c21cefccdd160ebe4d31bd163a44.png

往期精彩回顾

74cf865f0e10d40fdcc22cf0756da699.png

怎样为你的 Vue.js 单页应用提速

10 个实用的 JavaScript 小技巧

它改变了 JavaScript 的体系结构——Webpack 5 Module Federation

与 JavaScript 模块相关的所有知识点

我们是怎样优化 V8 中的指针压缩的

当一个模块被导入两次时,会发生什么?

ReactJS 与 VueJS:两种流行前端 JS 框架之战

十分钟搞定 TypeScript + webpack 配置

18 个漂亮的 Bootstrap 模板

前端程序员要懂的 UI 设计知识

175e712219701fb6c080a07d71b79591.png 如果觉得有帮助,请点击“在看”让更多小伙伴知道
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值