当前位置: 首页 > 科技观察

快速使用Docker入门Sentry-CLI——玩转SourceMapsusing(Create-React-App)

时间:2023-03-16 15:32:52 科技观察

本文转载请联系黑客下午茶公众号。使用DockerSentry-CLI快速入门系列-创建发布入门使用sentry-cli上传源映射时,您需要设置构建系统以创建发布并上传与该发布对应的各种源文件。要让Sentry解码您的堆栈跟踪,还需要提供:要部署的文件(换句话说,您的编译/缩小/捆绑过程的结果;例如app.min.js)相应的源映射如果源映射文件不包含您的原始源代码(sourcesContent),您还必须提供原始源文件。如果缺少源文件,SentryCLI将尝试自动将源嵌入到您的源映射中。Sentry使用发布将正确的源映射与您的事件相匹配。要创建新版本,请运行以下命令(例如,在发布期间):sentry-clireleasesnew发布名称在您的组织内必须是唯一的,并且与您的SDK初始化代码中的发布选项匹配。然后,使用upload-sourcemaps命令扫描源映射文件夹,处理它们,并将它们上传到Sentry。sentry-clireleasesfilesupload-sourcemaps/path/to/files您可以通过导航到[Project]>ProjectSettings>SourceMaps找到上传到Sentry的工件。此命令会将所有以.js和.map结尾的文件上传到指定版本。如果你想改变这些扩展——例如,上传typescript源文件——使用--ext选项:sentry-clireleasesfilesupload-sourcemaps--extts--extts--extmap/path/to/files这个版本到目前为止处于草稿状态(“未发布”)。上传所有源映射后,您的应用程序已成功发布。使用以下命令完成发布:sentry-clireleasesfinalize实际创建ReactApp快速创建Demo创建一个新的typescriptapp模板项目:npxcreate-react-appmy-app--templatetypescriptadded@sentry/react,@sentry/tracing包:yarnadd@sentry/react@sentry/tracing修改项目代码到src/index.tsx,做如下调整:importReactfrom'react';importReactDOMfrom'react-dom';import'./index.css';importAppfrom'./App';import*asSentryfrom"@sentry/react";import{Integrations}from"@sentry/tracing";Sentry.init({dsn:"https://token@your.sentry.com/2",//你的哨兵项目DSNrelease:"1.0.0",integrations:[newIntegrations.BrowserTracing()]});ReactDOM.render(,document.getElementById('根'));进入src/App.tsx,做如下调整:importReactfrom'react';importlogofrom'./logo.svg';import'./App.css';constonError=()=>{//这里故意抛出一个错误,让哨兵捕获thrownewError("Breaktheworld")}constbtnStyles={width:"200px",height:"50px",cursor:"pointer",fontSize:"22px"}functionApp(){return(Breaktheworld

);}exportdefaultApp;添加.sentryclirc文件,详情可参看上一篇文章->快速使用Docker入门Sentry-CLI-创建版本[auth]token=your-auth-token[defaults]org=sentryproject=create-react-app-sentryurl=https://x.xxx.com编译项目yarnbuild最终项目结构在项目根目录上传SourceMaps,进入sentry-clidocker容器shell环境:dockerrun--rm-it-v$(pwd):/workgetsentry/sentry-cli/bin/sh设置变量:VERSION="1.0.0"#版本号SOURCEMAPS_PATH="./build/static/js"#BuildSourceMapsURL_PREFIX="~/static/js/"#表示你的js相关文件托管在http://example。在com/static/js/下执行如下命令:sentry-clireleasesnew"$VERSION"#Createdrelease1.0.0.sentry-clireleasesfiles"$VERSION"upload-sourcemaps“$SOURCEMAPS_PATH”--url-prefix“$URL_PREFIX”#>Found8releasefiles#>Analyzing8sources#>Analyzingcompletedin0.101s#>Rewritingsources#>Rewritingcompletedin0.034s#>Addingsourcemapreferences#>Bundlingfilesforupload...#>Bundlingcompletedin0.064s#>Optimizingcompletedin0.002s#>Uploadingcompletedin2.144s#>UploadedreleasefilestoSentry#>Processingcompletedin0.077s#>Fileuploadcomplete(processingpendingonserver)#SourceMapUploadReport#MinifiedScripts#~/static/js/2.42a26a34.chunk.js(sourcemapat2.42a26a34.chunk.js.map))#~/static/js/3.edf82367.chunk.js(sourcemapat3.edf82367.chunk.js.map)#~/static/js/main.d1a3df88.chunk.js(sourcemapatmain.d1a3df88.chunk.js.map))#~/static/js/runtime-main.b608d38a.js(sourcemapatruntime-main.b608d38a.js.map)#SourceMaps#~/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.mapsentry-clireleasesfinalize"$VERSION"#Finalizerelease1.0.0.exit#退出Sentry后台容器,应该看到下图:本地测试如果你是Mac本地开发环境,可以直接执行如下命令:pushdbuild;python-mSimpleHTTPServer;popd点击Breaktheworld按钮:一般情况下错误已经上传到Sentry,然后在错误详情中应该看到如下图: