快速使用 Docker 上手 Sentry-CLI - 玩转 Source Maps 使用 (create-react-app)

系列
入门
使用 sentry-cli 上传 source maps 时,您需要设置构建系统以创建版本(release)并上传与该版本对应的各种源文件。要让 Sentry 对您的堆栈跟踪进行解码,请同时提供:
- 要部署的文件(换句话说,您的
编译/压缩/打包(transpilation/minification/bundling)过程的结果;例如,app.min.js) - 对应的
source maps
如果 source map 文件不包含您的原始源代码 (sourcesContent),您还必须提供原始源文件。 如果源文件丢失,Sentry CLI 将尝试自动将源嵌入到您的 source maps 中。
Sentry 使用 releases 将正确的 source maps 与您的事件相匹配。
要创建新版本,请运行以下命令(例如,在发布期间):
sentry-cli releases new <release_name>
release名称在您的组织中必须是唯一的,并且与您的SDK初始化代码中的release选项相匹配。
然后,使用upload-sourcemaps命令扫描文件夹中的source maps,处理它们,并将它们上传到Sentry。
sentry-cli releases files <release_name> upload-sourcemaps /path/to/files
您可以通过导航到
[Project] > Project Settings > Source Maps找到上传到Sentry的工件。
此命令会将所有以 .js 和 .map 结尾的文件上传到指定的版本(release)。如果你想改变这些扩展 — 例如,上传 typescript 源文件 — 使用 --ext 选项:
sentry-cli releases files <release_name> upload-sourcemaps --ext ts --ext map /path/to/files
到目前为止,该版本处于草稿状态(“unreleased”)。
上传所有 source maps 后,您的应用程序已成功发布,使用以下命令完成 release:
sentry-cli releases finalize <release_name>
实战
Create React App 快速创建一个 Demo
新建一个 typescript app 模板项目:
npx create-react-app my-app --template typescript
加入 @sentry/react,@sentry/tracing 包:
yarn add @sentry/react @sentry/tracing
修改项目代码
进入 src/index.tsx,进行如下调整:
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as Sentry from "@sentry/react";
import { Integrations } from "@sentry/tracing";
Sentry.init({
dsn: "https://token@your.sentry.com/2", // 你的 Sentry 项目 DSN
release: "1.0.0",
integrations: [new Integrations.BrowserTracing()]
});
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
进入 src/App.tsx,进行如下调整:
import React from 'react';
import logo from './logo.svg';
import './App.css';
const onError = () => {
// 这里故意抛出一个错误,让 sentry 捕获
throw new Error("Break the world")
}
const btnStyles = {width: "200px", height: "50px", cursor: "pointer", fontSize: "22px"}
function App() {
return (
<div className="App">
<header className="App-header">
<button style={btnStyles} onClick={onError}>Break the world</button>
<img src={logo} className="App-logo" alt="logo" />
</header>
</div>
);
}
export default App;
加入 .sentryclirc 文件,详情可看上篇 -> 快速使用 Docker 上手 Sentry-CLI - 创建一个版本
[auth]
token=your-auth-token
[defaults]
org=sentry
project=create-react-app-sentry
url=https://x.xxx.com
编译项目
yarn build
最终项目结构

上传 Source Maps
在项目根目录中,进入 sentry-cli docker 容器 shell 环境:
docker run --rm -it -v $(pwd):/work getsentry/sentry-cli /bin/sh
设置变量:
VERSION="1.0.0" # 版本号
SOURCEMAPS_PATH="./build/static/js" # 构建的 Source Maps
URL_PREFIX="~/static/js/" # 说明你的 js 相关文件被托管在 http://example.com/static/js/ 下
执行如下命令:
sentry-cli releases new "$VERSION"
# Created release 1.0.0.
sentry-cli releases files "$VERSION" upload-sourcemaps "$SOURCEMAPS_PATH" --url-prefix "$URL_PREFIX"
# > Found 8 release files
# > Analyzing 8 sources
# > Analyzing completed in 0.101s
# > Rewriting sources
# > Rewriting completed in 0.034s
# > Adding source map references
# > Bundling files for upload...
# > Bundling completed in 0.064s
# > Optimizing completed in 0.002s
# > Uploading completed in 2.144s
# > Uploaded release files to Sentry
# > Processing completed in 0.077s
# > File upload complete (processing pending on server)
# Source Map Upload Report
# Minified Scripts
# ~/static/js/2.42a26a34.chunk.js (sourcemap at 2.42a26a34.chunk.js.map)
# ~/static/js/3.edf82367.chunk.js (sourcemap at 3.edf82367.chunk.js.map)
# ~/static/js/main.d1a3df88.chunk.js (sourcemap at main.d1a3df88.chunk.js.map)
# ~/static/js/runtime-main.b608d38a.js (sourcemap at runtime-main.b608d38a.js.map)
# Source Maps
# ~/static/js/2.42a26a34.chunk.js.map
# ~/static/js/3.edf82367.chunk.js.map
# ~/static/js/main.d1a3df88.chunk.js.map
# ~/static/js/runtime-main.b608d38a.js.map
sentry-cli releases finalize "$VERSION"
# Finalized release 1.0.0.
exit
# 退出容器
在 Sentry 后台,你应该看到如下图:

本地测试
如果你是 Mac 本地开发环境,可直接执行如下命令:
pushd build; python -m SimpleHTTPServer; popd
点击 Break the world 按钮:

正常情况下,错误已被上传到 Sentry,然后在错误详情中应看到如下图:

公众号:黑客下午茶
快速使用 Docker 上手 Sentry-CLI - 玩转 Source Maps 使用 (create-react-app)的更多相关文章
- 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建一个版本
我们可以使用官方 sentry-cli 工具操作 Sentry API,从而来为你的项目管理一些数据.它主要用于管理 iOS.Android 的调试信息文件,以及其他平台的版本(release)和源代 ...
- Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT Source Maps 详解
系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...
- 利用 Create React Native App 快速创建 React Native 应用
本文介绍的 Create-React-Native-App 是非常 Awesome 的工具,而其背后的 Expo 整个平台也让笔者感觉非常的不错.笔者目前公司是采用 APICloud 进行移动应用开发 ...
- 快速掌握Docker必备基础知识
快速掌握Docker必备基础知识 Docker是时下热门的容器技术,相信作为一名开发人员,你一定听说过或者使用过,很多人会把Docker理解为一个轻量级虚拟机,但其实Docker与虚拟机(VM)是两种 ...
- 用浏览器快速开启Docker的体验之旅
互联网科技发展创造了很多奇迹,比如我今天要提到的 docker 技术就是其一.我很早就关注它(在2015年写过这方面的博客),那会儿还只是一个开源项目,现在已经是一个行业事实标准了,它推动了云原生的变 ...
- 超快速使用docker在本地搭建hadoop分布式集群
超快速使用docker在本地搭建hadoop分布式集群 超快速使用docker在本地搭建hadoop分布式集群 学习hadoop集群环境搭建是hadoop入门的必经之路.搭建分布式集群通常有两个办法: ...
- css3弹性盒模型flex快速入门与上手(align-content与align-items)
接着上文css3弹性盒模型flex快速入门与上手1继续,上文还剩下两个父容器的属性align-items和align-content. 一.align-content:多行的副轴对齐方式 含义 多行的 ...
- Unable to docker login through CLI - unauthorized: incorrect username or password
Unable to docker login through CLI - unauthorized: incorrect username or password To solve it proper ...
- CentOS 使用 Docker 安装 Sentry
官网介绍:Sentry是一个实时事件日志记录和汇集的日志平台,其专注于错误监控,以及提取一切事后处理所需的信息.他基于Django开发,目的在于帮助开发人员从散落在多个不同服务器上的日志文件里提取发掘 ...
随机推荐
- vue3.0使用ant-design-vue进行按需加载原来这么简单
下载 ui库 yarn add ant-design-vue 默认是全局引入,打包后体积很大, 非常影响首屏加载速度, 按需加载 下载按需加载的插件;推荐使用cnpm cnpm install bab ...
- 【源码】“@Value 注入不成功”引发的一系列骚操作
目录 背景 模拟@Value成功的场景 模拟注入不成功的场景 看看为什么没有注入成功 为什么加static和不加static的加载顺序是不一样的呢 我们不加static,能不能也让它注入成功呢? 总结 ...
- docker报错Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
docker报错Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon run ...
- 学习vue过程中遇到的问题
1.vue-quill-editor动态禁用 项目中把vue-quill-editor单独封装成了一个组件,通过props传递readOnly参数来设置是否禁用editor.开发中发现可以实现禁用效果 ...
- 解决win10快速访问不能取消固定
最近发现win10的快速访问不能取消固定,比如ftp和smb之类的都不能取消固定 最后百度了一下发现一个简易的方法: 在文件资源管理器地址栏输入:%APPDATA%\Microsoft\Windows ...
- shell——if、case例题
目录 例题一:检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限 例题二:提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果 ...
- MySQL-17-MHA高可用技术
环境准备 环境准备 至少准备3台独立的虚拟机数据库实例,建议4台 这里实验只准备3台,需要配置好 基于GTID的主从复制,具体怎么配置可以参看前面的章节 db01 10.0.0.51 主库 db02 ...
- Golang语言系列-01-Go语言简介和变量
Go语言简介 Go(又称Golang)是Google开发的一种静态强类型.编译型.并发型,并具有垃圾回收功能的编程语言. 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pi ...
- Python语言系列-09-socket编程
简介 软件开发的架构 1.C/S架构(client-server) 2.B/S架构 (browser-server) 网络基础概念 网络三要素: 1.ip 2.port 3.通信协议:TCP.UDP ...
- 【笔记】特征脸(PCA在人脸识别领域的应用)
人脸识别与特征脸(简单介绍) 什么是特征脸 特征脸(Eigenface)是指用于机器视觉领域中的人脸识别问题的一组特征向量,该方法被认为是第一种有效的人脸识别方法. PCA的具体实现思想见 [笔记]主 ...