我正在使用 webpack 构建、缩小和生成我的应用程序的源映射。工件通过 webpack-sentry-plugin 发送到 sentry.io。
javascript 代码从localhost:8080/js/app.js. 它包含//# sourceMappingURL=app.js.map在最后。Sourcemaps 在 Chrome devtools 上正常工作。
Sentry 的发布/工件包含以下文件:
js/app.js
js/app.js.map
Run Code Online (Sandbox Code Playgroud)
无论如何,当 Sentry 记录错误时,堆栈跟踪来自缩小的文件。它没有使用源映射。
我的设置有什么问题?或者我应该提供哪些其他信息以获得帮助?
我在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
})
]
}
Run Code Online (Sandbox Code Playgroud)