什么是 budapest?
budapest
是一个用于测试 Javascript 代码时产生 Stack Traces 的工具。它扩展了内置的 Error
类。当在代码中使用它的时候,你可以捕捉到 Stack Trace 的部分,这样你就能够更好地 Debug 代码。
为什么要使用 budapest?
有许多其他的工具可以用于 Debugging,那么为什么要使用 budapest 呢?这里给出一些其优势的原因:
- 细颗粒度的异常堆栈跟踪,即支持 async/await。
- 堆栈跟踪中包含源码和范围变量。(支持source-map)
- 可以通过配置文件进行高度的定制,支持多种输出格式和处理器,如Slack, JSON,Orbit,命令行等。
- 不会阻塞主线程,极度零干扰性,可以在生产环境使用。
如何在你的项目中使用 budapest?
以下是使用 budapest
的步骤:
1. 安装 npm 包
npm install budapest --save-dev
2. 在你的代码中使用 budapest
使用时,简单地在代码中抛出一个异常:
const budapest = require('budapest'); function foo(j) { if (j === 0) { throw new budapest(); } return 42 / j; } foo(0);
通过这行代码,我们可以显示以下信息:
正如你所见,输出中包括了 foo
函数和 test.js
文件的文件名和行数,这使得 Debug 函数将变得更加容易。
3. 定制化 budapest
budapest
有强大的自定义性,以下是一些可以自定义的选项:
cwd
:string
默认值同调用node
目录。sourceMapCache
: 可以缓存的 sourceMap 文件,主要为提升性能而提供的。filename
:靠近Error
中的(flattened)文件名或用于生成输出中的名称。Tip:如果 Node.js 环境变量中设置了NODE_ENV=production
,不需要指定该值,budapest会自动取文件的文件名部分映射为代码目录,若是非生产环境为了能够找到源代码需要配置该选项。silent
: 是否隐藏标准 error stack trace。
您可以配置 .budapestrc.js
文件来覆盖上述选项,如下:
-- -------------------- ---- ------- -------------- - - --------- ------ ------------------------------------ --------------- ----- ------- ----- ----------- - --------------------- ------ ----------------------------------- ----- ------- -------- - ------ ---- - - - -
3.1 静默模式
您可以使用silent
选项来禁止 budapest 打印 error 的 stack trace。
const budapest = require('budapest'); function foo(j) { if (j === 0) { throw new budapest({silent: true});//这样就不会显示标准 error stack 了。 } return 42 / j; } foo(0);
3.2 强制使用源代码
可以使用 filename
选项来强制使用源代码文件名来映射上报的行,而不是使用一个 flatten(就是单纯文件名部分加上行号和数目)。这对于定位到具体哪个代码更容易。这对于查找错误所在代码非常有用。
const budapest = require('budapest'); function foo(j) { if (j === 0) { throw new budapest({filename: __filename});//指定文件名 } return 42 / j; } foo(0);
3.3 缓存 sourceMap 文件
如果有许多只读打开的映射文件,可以在代码中使用sourceMapCache
选项缓存 sourceMap 文件:
const budapest = require('budapest'); function foo(j) { if (j === 0) { throw new budapest({sourceMapCache:true});//缓存 sourceMap 文件 } return 42 / j; } foo(0);
4. 集成 budapest
budapest
集成了许多常用的处理器,如 Slack、Command line 等。这可以帮助您指导 bug 生命周期和提醒你和接收者更有效地讨论 bug,例如在解决问题时使用 Slack 通知。
4.1 CLI 处理器
CLI 处理器是默认启用的,可以按以下方式使用它:
budapest test.js
或者使用 npm
脚本:
"scripts": { "test": "budapest test.js" },
现在您可以轻松地通过npm test
命令运行测试,budapest 将作为错误码 exit。
4.2 更复杂的处理器
budapest
支持各种输出处理器,例如 Slack 或 Elasticsearch。下面是一些可用的处理器:
slack
:向 Slack 频道发送错误。orbit
: 往 Orbit 发送错误。elasticsearch
:编辑 Elasticsearch 集群。mailgun
:向重要团队成员发送邮件。
处理器的选项在 .budapestrc.js
文件中定义,比如:
-- -------------------- ---- ------- -------------- - - ----------- - - ----- -------- -------- - ----------- ---------------------------------------- - - - -
您可以查看官方文档来了解如何使用编写其他处理器,并了解如何在 budapest 中整合它们。
结论
budapest
是一个非常好用的工具,它提供了详细的 Stack Trace 输出、源码映射、灵活的配置方式和多种处理器来帮助您更好地 Debug 应用程序。希望这篇指南能够帮助你快速上手 budapest,并能够更好地 Debug Javascript 代码。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066c8dccdc64669dde553a