哨兵的 sourcemaps/artifacts 不起作用

Sentry's sourcemaps/artifacts don't work

我正在使用 webpack 构建、缩小和生成我的应用程序的源映射。使用 webpack-sentry-plugin 将工件发送到 sentry.io。

javascript 代码是 运行 来自 localhost:8080/js/app.js。它在末尾包含 //# sourceMappingURL=app.js.map。 Sourcemaps 在 Chrome devtools 上正常工作。

Sentry 的 Releases/Artifacts 包含以下文件:

js/app.js
js/app.js.map

无论如何,当 Sentry 记录错误时,堆栈跟踪来自缩小文件。它没有使用 sourcemaps。

我的设置有什么问题?或者我应该提供哪些其他信息以获得帮助?

我在 forum.sentry.io 上发布了这个问题,并从一个叫 @benvinegar 的人那里得到了答案。

事情是这样的:发送 sourcemap/artifact 时,我们提供文件和文件名。文件名应该是完整的 URL 如果源映射与缩小的 JS 文件一起上传到主机,则源映射所在的位置。也就是说:如果我们的缩小 Javascript 位于 www.example.com/js/app.js,那么 sourcemap/artifact 文件名必须是 www.example.com/js/app.js.map。否则,如果我们希望 sourcemap 应用于其他情况,例如 运行 localhost:8080/js/app.js.

的应用程序,我们可以将其命名为 ~/js/app.js.map

因为我正在使用 webpack-sentry-plugin,所以只需将以下 属性 添加到插件中即可:

{
  plugins: [
    new SentryPlugin({
      filenameTransform: filename => '~/' + filename
    })
  ]
}

在我们的例子中,它已经很久没有工作了。

一切似乎都很好。已上传工件、标记版本、记录错误,但没有源映射。

问题底线:我们自己托管Sentry,sentry被分到不同的容器中。他们没有正确共享数据。

一种解决方案是在容器之间共享数据(参见 that post)或者甚至将您的源映射上传到 S3 服务器,Sentry 也可以使用它。