Wer*_*eta 5 javascript laravel source-maps reactjs
我正在使用 Sentry 来报告我创建的 React 应用程序的错误。
问题是我不知道如何调试某些问题,因为我不知道错误发生在哪个文件中:
我使用 Laravel mix 进行编译。看起来webpack.mix.js像这样:
mix
.react("resources/js/checkout/CheckoutRoot.js", "public/js")
.version();
Run Code Online (Sandbox Code Playgroud)
我尝试sourceMaps()像这样使用:
const productionSourceMaps = true;
mix
.react("resources/js/checkout/CheckoutRoot.js", "public/js")
.react("resources/js/checkout/DonationRoot.js", "public/js")
.version()
.sourceMaps(productionSourceMaps, "source-map")
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用。在 Chrome 开发工具中查看时,它会将其附加到文件正下方:
//# sourceMappingURL=27.js.map?id=c4f9bf41f206bfad8600
Run Code Online (Sandbox Code Playgroud)
但是当我漂亮地打印时,它仍然会导致同样的乱码:
我希望看到它指出我正在本地处理的组件文件。那可能吗?
更新
我尝试安装 Sentry 的 webpack 插件:
const SentryWebpackPlugin = require("@sentry/webpack-plugin");
let config = {
output: {
publicPath: "/",
chunkFilename: "js/chunks/[name].js?id=[chunkhash]",
},
plugins: [
new SentryWebpackPlugin({
// sentry-cli configuration
authToken: "MY_AUTH_TOKEN",
org: "MY_ORG",
project: "MY_PROJECT",
release: "MY_RELEASE",
include: ".",
ignore: ["node_modules", "webpack.config.js"],
}),
],
};
Run Code Online (Sandbox Code Playgroud)
release在我的源文件上初始化 Sentry 时使用相同的方法:
Sentry.init({
dsn: "MY_DSN",
release: "testing",
});
Run Code Online (Sandbox Code Playgroud)
放一些失败的代码:
useEffect(() => {
console.bog("MY_RELEASE");
}, []);
Run Code Online (Sandbox Code Playgroud)
然后像往常一样编译:
npm run production
Run Code Online (Sandbox Code Playgroud)
我在浏览器上触发了错误,并在那里得到了预期的文件(MobilePayment.js):
但从 Sentry 中,我得到的只是:
我希望能MobilePayment.js在那里找到,但没有。编译时,我得到了这个:
所以我假设它已将源代码上传到 Sentry。
我什至使用 Sentry-cli 尝试了同样的事情:
sentry-cli releases files release upload-sourcemaps --ext js --ext map /path/to/public/js
Run Code Online (Sandbox Code Playgroud)
它几乎做了同样的事情:
然后我触发了同样的错误。但我仍然从 Sentry 仪表板得到相同的输出。请帮忙。
我以前遇到过这个。
IIRC 的诀窍是找到正确的devtoolWebPack 选项。
我记不太清了,但我想我用过eval-cheap-module-source-map或eval-source-map。
| 归档时间: |
|
| 查看次数: |
3184 次 |
| 最近记录: |