SystemJS
使用 SystemJS 和 Sentry CLI 上传源映射。
在本指南中,您将学习如何成功使用我们的 sentry-cli
工具为 SystemJS 上传源映射。
本指南假设以下条件:
sentry-cli
版本 >=2.17.0
- Sentry JavaScript SDK 版本 >=
7.47.0
首先,配置 SystemJS 以输出源映射:
builder.bundle("src/app.js", "dist/app.min.js", {
minify: true,
sourceMaps: true,
sourceMapContents: true,
});
生成源映射文件可能会将其暴露给公众,从而导致您的源代码泄露。您可以通过配置服务器拒绝访问 .js.map
文件,或在部署应用程序之前删除源映射文件来防止这种情况。
您可以在以下链接找到 Sentry CLI 的安装说明:https://docs.sentry.io/cli/installation/
有关 sentry-cli
配置的更多信息,请参阅 Sentry CLI 配置文档。
确保 sentry-cli
已为您的项目配置好。为此,您可以使用环境变量:
.env.local
SENTRY_ORG=example-org
SENTRY_PROJECT=example-project
SENTRY_AUTH_TOKEN=sntrys_YOUR_TOKEN_HERE
调试 ID 用于将事件的堆栈帧与其对应的最小化源文件和源映射文件匹配。如果您想了解更多关于工件包和调试 ID 的信息,请访问 什么是工件包。
要注入调试 ID,请使用以下命令:
sentry-cli sourcemaps inject /path/to/directory
最小化源文件应在末尾包含一个名为 debugId
的注释,例如:
example_minified_file.js
...
//# debugId=<debug_id>
//# sourceMappingURL=<sourcemap_url>
源映射文件应包含一个名为 debug_id
的字段,例如:
example_source_map.js.map
{
...
"debug_id":"<debug_id>",
...
}
在您将调试 ID 注入工件后,使用以下命令上传它们。
sentry-cli sourcemaps upload /path/to/directory
打开 Sentry 并导航到 项目设置 > 源映射。如果您在选项卡导航中选择“工件包”,您将看到所有已成功上传到 Sentry 的工件包。
如果您是按照本指南在本地机器上操作,那么您已经成功完成了以下步骤:
- 通过运行应用程序的构建过程生成了最小化源文件和源映射文件(工件)。
- 将调试 ID 注入到刚刚生成的工件中。
- 使用我们的上传命令将这些工件上传到 Sentry。
最后一步是使用第一步中生成的工件部署应用程序的新版本。我们强烈建议您将 sentry-cli
集成到您的 CI/CD 流水线中,以确保每次后续部署都会自动将调试 ID 注入每个工件并直接上传到 Sentry。
警告
仅在您确定绝对需要这些可选步骤时才进行。使用 release
和 dist
值会使您的工件上传更加具体,但也会使整个过程更不宽容,可能导致您的代码无法被 Sentry 正确反混淆。
在您的 SDK 选项中提供一个 release
属性。
Sentry.init({
// This value must be identical to the release name specified during upload
// with the `sentry-cli`.
release: "<release_name>",
});
之后,使用额外的 --release
选项运行 sourcemaps upload
命令。请确保为 <release_name>
指定的值与 SDK 选项中指定的值相同。
sentry-cli sourcemaps upload --release=<release_name> /path/to/directory
使用 --release
选项运行 upload
不会自动在 Sentry 中创建版本。您可以等待第一个带有新版本设置的事件通过 Sentry.init
发送到 Sentry,或者使用相同的名称在单独的步骤中通过 CLI 创建版本。
除了 release
,您还可以为上传的工件添加 dist
,以设置上传文件的分发标识符。为此,请使用额外的 --dist
选项运行 sourcemaps upload
命令。
在您的 SDK 选项中提供 release
和 dist
属性。
Sentry.init({
// These values must be identical to the release and dist names specified during upload
// with the `sentry-cli`.
release: "<release_name>",
dist: "<dist_name>",
});
分发标识符用于在同一版本内区分多个同名文件。dist
可用于区分不同的构建或部署变体。
sentry-cli sourcemaps upload --release=<release_name> --dist=<dist_name> /path/to/directory