我正在使用webpack构建,缩小和生成应用程序的源图。使用webpack-sentry-plugin将工件发送到sentry.io。
javascript代码从localhost:8080/js/app.js
运行。它最后包含//# sourceMappingURL=app.js.map
。源代码在Chrome devtools上正常运行。
Sentry的Releases / Artifacts包含以下文件:
js/app.js
js/app.js.map
无论如何,当Sentry记录错误时,stacktrace来自缩小的文件。它没有使用源图。
在我的设置中我做错了什么?或者我应该提供哪些其他信息以获得帮助?
答案 0 :(得分:4)
我在forum.sentry.io上发布了这个问题,得到了一个叫@benvinegar的人的答案。
这就是:当发送源图/工件时,我们提供文件和文件名。如果源映射与缩小的JS文件一起上载到主机,则文件名应该是源映射所在的完整URL。即:如果我们的缩小Javascript位于www.example.com/js/app.js
,则源映射/工件文件名必须为www.example.com/js/app.js.map
。否则,如果我们希望源地图适用于其他情况,例如在~/js/app.js.map
运行应用,我们可以将其命名为localhost:8080/js/app.js
。
当我使用webpack-sentry-plugin
时,只需将以下属性添加到插件中即可:
{
plugins: [
new SentryPlugin({
filenameTransform: filename => '~/' + filename
})
]
}
答案 1 :(得分:1)
在我们的情况下,它已经没有工作很长时间了。
一切似乎都很好。已上传工件,已标记版本,记录了错误,但没有源映射。
问题的底线:我们自己托管哨兵,而哨兵则分为不同的容器。他们没有正确共享数据。
一种解决方案是在容器之间共享数据(请参见that post),甚至将源地图上传到S3服务器,Sentry也可以使用它。