您现在的位置是:亿华云 > 数据库
快速使用 Docker 上手 Sentry-CLI - 玩转 Source Maps 使用 (Create-React-App)
亿华云2025-10-03 03:17:47【数据库】4人已围观
简介本文转载自微信公众号「黑客下午茶」,作者为少 。转载本文请联系黑客下午茶公众号。系列快速使用 Docker 上手 Sentry-CLI - 创建版本入门使用 sentry-cli 上传 source
本文转载自微信公众号「黑客下午茶」,快速作者为少 。使用上手s使转载本文请联系黑客下午茶公众号。快速
系列
快速使用 Docker 上手 Sentry-CLI - 创建版本
入门
使用 sentry-cli 上传 source maps 时,使用上手s使您需要设置构建系统以创建版本(release)并上传与该版本对应的快速各种源文件。要让 Sentry 对您的使用上手s使堆栈跟踪进行解码,请同时提供:
要部署的快速文件(换句话说,您的使用上手s使编译/压缩/打包(transpilation/minification/bundling) 过程的结果;例如,app.min.js) 对应的快速 source maps如果 source map 文件不包含您的原始源代码 (sourcesContent),您还必须提供原始源文件。使用上手s使如果源文件丢失,快速Sentry CLI 将尝试自动将源嵌入到您的使用上手s使 source maps 中。
Sentry 使用 releases 将正确的快速 source maps 与您的高防服务器事件相匹配。要创建新版本,使用上手s使请运行以下命令(例如,快速在发布期间):
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,然后在错误详情中应看到如下图:
很赞哦!(8679)
上一篇: 数据中心光缆安装四大要点
下一篇: 数据架构中的数据问题
相关文章
- 2022年第十七届中国企业年终评选榜单揭晓:亿万克R322N6+荣获2022年度中国IT行业服务器优秀产品奖
- 顶级域名可以增加企业品牌的价值。随着经济的快速发展,域名已不再是企业在网络中的独立地位。顶级域名的服务范围、企业产品、综合形象体现等,对于企业单位来说,顶级域名的重要性不言而喻。
- 域名和网址一样吗?域名和网址有什么区别?
- 为什么起域名意义非凡?起域名有什么名堂?
- IBM携手腾讯联合发布《无边界零售》白皮书:洞察行业新格局,赋能企业“无边界零售”转型
- 互联网其实拼的也是人脉,域名投资也是一个时效性很强的东西,一个不起眼的消息就会引起整个域名投资市场的动荡,因此拓宽自己的人脉圈,完善自己的信息获取渠道,让自己能够掌握更为多样化的信息,这样才更有助于自己的域名投资。
- 顶级域名可以增加企业品牌的价值。随着经济的快速发展,域名已不再是企业在网络中的独立地位。顶级域名的服务范围、企业产品、综合形象体现等,对于企业单位来说,顶级域名的重要性不言而喻。
- 小白注册网站域名该怎么办?有什么步骤?
- 数据中心环境控制是管理员的重中之重
- 3、查看排名