Source Map 线上生效但本地调试找不到原始 CSS 文件?
我用 Webpack 打包了项目,线上错误监控能通过 Source Map 定位到原始 JS 文件,但 CSS 报错时却只能看到压缩后的样式,根本没法调试。明明 devtool 里也配了 source-map,CSS 的 Source Map 文件也生成了,就是不生效。
比如这段样式:
.header {
background-color: #007bff;
padding: 1rem;
border-radius: 4px;
}
打包后变成一行,控制台点进去是 bundle.css,而不是我写的 header.module.css。是不是 CSS 的 Source Map 需要额外配置?试过 mini-css-extract-plugin 的 options 里加 sourceMap: true,还是不行……
首先确保 webpack.config.js 里 devtool 设置正确,用 eval-source-map 比较靠谱,它在开发环境能提供更好的调试体验。当然 production 环境别这么干,太影响性能。
然后重点来了,mini-css-extract-plugin 的 sourceMap 要设置没错,但你还得检查 style-loader 有没有配对。这个插件组合起来才管用:
另外记得清理缓存,浏览器有时会死活不更新 source map 文件。还有就是不同浏览器对 source map 的支持有差异,Chrome 一般比较稳。
最后提醒下,如果用了 postcss 之类工具,也要确认它们的配置是否都开启了 source map 支持。这种小细节最容易被忽略。
试试这几个方向,应该能解决问题了。折腾这些配置真挺累人的,但调通那一刻还挺爽的。