Sentry 官方 JavaScript SDK 简介与调试指南
系列
- 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本
- 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps
- Sentry For React 完整接入详解
- Sentry For Vue 完整接入详解
- Sentry-CLI 使用详解
- Sentry Web 性能监控 - Web Vitals
- Sentry Web 性能监控 - Metrics
- Sentry Web 性能监控 - Trends
- Sentry Web 前端监控 - 最佳实践(官方教程)
- Sentry 后端监控 - 最佳实践(官方教程)
- Sentry 监控 - Discover 大数据查询分析引擎
- Sentry 监控 - Dashboards 数据可视化大屏
- Sentry 监控 - Environments 区分不同部署环境的事件数据
- Sentry 监控 - Security Policy 安全策略报告
- Sentry 监控 - Search 搜索查询实战
- Sentry 监控 - Alerts 告警
- Sentry 监控 - Distributed Tracing 分布式跟踪
- Sentry 监控 - 面向全栈开发人员的分布式跟踪 101 系列教程(一)
- Sentry 监控 - Snuba 数据中台架构简介(Kafka+Clickhouse)
- Sentry 监控 - Snuba 数据中台架构(Data Model 简介)
- Sentry 监控 - Snuba 数据中台架构(Query Processing 简介)
源码仓库地址
https://github.com/getsentry/sentry-javascript
支持的平台
对于每个主要的 JavaScript
平台,都有一个特定的高阶 SDK
,可以在单个包中提供您需要的所有工具。 有关更多详细信息,请参阅这些 SDK 的 README 和说明:
@sentry/browser
: 浏览器的SDK
,包括对基础主干(GlobalHandlers
,TryCatch
,Breadcrumbs
,LinkedErrors
,UserAgent
,Dedupe
)的集成。@sentry/node
: 适用于Node
的SDK
,包括Express
、Koa
、Loopback
、Sails
和Connect
的集成。@sentry/angular
: 启用Angular
集成的浏览器SDK
。@sentry/react
: 启用React
集成的浏览器SDK
。@sentry/ember
: 启用Ember
集成的浏览器SDK
。@sentry/vue
: 启用Vue
集成的浏览器SDK
。@sentry/gatsby
:Gatsby
的SDK
。@sentry/nextjs
:Next.js
的SDK
。@sentry/integrations
: 可用于增强JS SDK
的可插拔集成。@sentry/electron
: 支持原生崩溃的Electron SDK
。@sentry/react-native
: 支持原生崩溃的React Native SDK
。@sentry/capacitor
: 支持原生崩溃的Capacitor App
和Ionic
的SDK
。sentry-cordova
: 支持原生崩溃的Cordova App
的SDK
。raven-js
: 旧的稳定JavaScript SDK
,我们仍然支持并发布SDK
的错误修复,但所有新功能都将在@sentry/browser
中实现,它是继任者。raven
:旧的稳定Node SDK
,与raven-js
一样,我们仍然支持并发布SDK
的错误修复,但所有新功能都将在@sentry/node
中实现,它是继任者。
用于平台 SDK
开发的共享软件包
@sentry/tracing
: 为性能监控
/跟踪
提供集成
和扩展
。@sentry/hub
:SDK
的全局状态管理。@sentry/minimal
:Sentry
支持的最小SDK
@sentry/core
: 具有接口
、类型定义
和基
类的所有JavaScript SDK
的基础。@sentry/utils
: 一组对各种SDK
有用的辅助程序和实用函数。@sentry/types
: 所有软件包中使用的类型定义。
开发调试
设置环境
要运行 test suite
和 code linter
,需要 node.js
和 yarn
。
sentry-javascript
是一个包含多个软件包的 monorepo
,使用 lerna
管理它们。 首先,安装所有依赖项,使用 lerna
引导工作区,然后执行初始构建,以便 TypeScript
可以读取所有链接的类型定义。
yarn
yarn lerna bootstrap
yarn build
这样,repo
就完全设置好了,您可以运行所有命令了。
构建软件包
由于我们使用的是 TypeScript
,因此您需要将代码转换为 JavaScript
才能使用它。来自 repo
的顶层,有三个可用命令:
yarn build:dev
,它运行每个包的ES5
和ES6
版本的一次性构建。yarn build:dev:filter <name of npm package>
,它只在与给定包相关的项目中运行yarn build:dev
(例如,运行yarn build:dev:filter @sentry/react
将构建react
包、它的所有依赖项(utils
、core
、browser
等),以及所有依赖它的包(目前是gatsby
和nextjs
))。yarn build:dev:watch
,在watch
模式下运行yarn build:dev
(推荐)
添加测试
任何重要的修复
/功能
都应该包括测试。您会在每个软件包中找到一个 test
文件夹。
请注意,仅对于 browser
包,如果您将新文件添加到集成测试套件中,您还需要将其添加到shell.js
中的列表中。 在所有包中,向现有文件添加测试都可以开箱即用。
运行测试
运行测试与构建的工作方式相同 - 在项目根目录运行 yarn test
将对所有包运行测试,在特定包中运行 yarn test
将为该包运行测试。还有一些命令可以在每个位置运行测试的子集。查看相应 package.json
的 scripts
条目以了解详细信息。
注意:你必须在 yarn test
工作之前运行 yarn build
。
调试测试
如果您在编写测试时遇到麻烦并需要调试其中之一,您可以使用 VSCode
的 debugger
来完成。
如果您尚未安装它,请安装 Tasks Shell Input
扩展,您可以在侧边栏的“扩展”
选项卡中找到它作为推荐的工作区扩展之一。
- 将断点或
debugger
语句放置在测试或底层代码中您希望jest
暂停的任何位置。 - 打开包含相关测试的文件,并确保其选项卡处于活动状态(以便您可以看到文件的内容)。
- 切换到侧边栏中的
debugger
,然后从下拉列表中选择Debug unit tests - just open file
。 - 单击绿色的
“play”
按钮以watch
模式在打开的文件中运行测试。
实战
测试代码:
- https://github.com/getsentry/sentry-javascript/blob/master/packages/minimal/test/lib/minimal.test.ts
专业提示:如果您的任何断点在由多个测试运行的代码中,并且您运行整个测试文件,您将在不关心的测试中间一遍又一遍地停留在这些断点上。为避免这种情况,请将测试的初始 it
或 test
替换为 it.only
或 test.only
。这样,当您遇到断点时,您就会知道您到达了有问题的测试的一部分。
Linting
与构建和测试类似,linting
可以通过调用 yarn lint
在项目根目录或单个包中完成。
注意:你必须在 yarn lint
工作之前运行 yarn build
。
公众号:黑客下午茶
Sentry 官方 JavaScript SDK 简介与调试指南的更多相关文章
- Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT SDK 配置详解
系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...
- Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT Source Maps 详解
系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...
- Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT 故障排除
系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...
- Sentry(v20.12.1) K8S 云原生架构探索, SENTRY FOR JAVASCRIPT 手动捕获事件基本用法
系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...
- NodeJS & Dapr Javascript SDK 官方使用指南
Dapr 是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架.Dapr 确保开发人员专注 ...
- linux内核调试指南
linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 ...
- Linux Kernel - Debug Guide (Linux内核调试指南 )
http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级 ...
- 华为云函数中使用云数据库的JavaScript SDK基础入门
背景介绍 使用云数据库Server端的SDK,此处我以华为提供的官方Demo为例,他们的Demo也已经开源放在了GitHub上,大家需要的可以自行下载. https://github.com/AppG ...
- Hello.js – Web 服务授权的 JavaScript SDK
Hello.js 是一个客户端的 Javascript SDK,用于实现 OAuth2 认证(或者基于 OAuth 代理实现的 OAuth1)的 Web 服务和查询 REST API. HelloJS ...
随机推荐
- 【Golang】三个点(...)用法
众所周知,Go语言是严格类型语言,而开发的时候又遇到传入参数不定的情况,怎么办? 这里的三个点(-),就给我们编程人员带来很大的灵活性,具体如下 在Golang中,三个点一共会用在四个地方(话说三个点 ...
- Java-爬虫-小项目
爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 项目地址:https://gitee.com/zwtgit/java-reptile 导入依赖,写一个工具类 <depend ...
- NOI 2016 Day1 题解
今天写了NOI2016Day1的题,来写一发题解. T2 网格 题目传送门 Description \(T\) 次询问,每次给出一个 \(n\times m\) 的传送门,上面有 \(c\) 个位置是 ...
- C++/CLR 使用(VS2012,VS2013,VS2015)编写
转载自:http://www.th7.cn/system/win/201509/129417.shtml VS2010以及以前的版本,创建项目时都可以在CLR下找到"Windows窗体应用程 ...
- perl打开读取文件(open)
在Perl中可以用open或者sysopen函数来打开文件进行操作,这两个函数都需要通过一个文件句柄(即文件指针)来对文件进行读写定位等操作.下面以open函数为例:1:读:open(文件句柄,&qu ...
- [软工顶级理解组] Beta阶段测试报告
在测试过程中发现了多少Bug? 测试阶段发现并已修复的bug: 尚且存在,但是难以解决或者不影响使用的bug: 计算重修课程的时候,如果重修课程的课程号和原课程号不同,则GPA计算会出现误差.但我们无 ...
- spring cloud zuul的回退
当我们使用 @EnableZuulProxy 注解来开启zuul的路由时,默认在@EnableZuulProxy注解上就包含了@EnableCircuitBreaker注解,即开启了断路器功能.那么在 ...
- WebGL着色器渲染小游戏实战
项目起因 经过对 GLSL 的了解,以及 shadertoy 上各种项目的洗礼,现在开发简单交互图形应该不是一个怎么困难的问题了.下面开始来对一些已有业务逻辑的项目做GLSL渲染器替换开发. 起因是看 ...
- 洛谷 P5665 [CSP-S2019] 划分
链接: P5665 题意: 给出 \(n\) 个整数 \(a_i\) ,你需要找到一些分界点 \(1 \leq k_1 \lt k_2 \lt \cdots \lt k_p \lt n\),使得 \( ...
- hdu 1856 More is better(并查集)
题意: Mr Wang wants some boys to help him with a project. Because the project is rather complex, the m ...