You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Webpack集成sass-loader后无法生成正确Source Map的问题

Webpack集成sass-loader后Source Map失效问题

问题现象

移除sass-loader时,Webpack可正常生成包含sourcesContent的Source Map;添加sass-loader后,Source Map丢失sourcesContent字段,浏览器调试时无法加载SCSS源文件,报错:

Could not load content for webpack://editify-v2/src/styles/delete.scss
(Fetch through target failed: Unsupported URL scheme; Fallback: HTTP
error: status code 404, net::ERR_UNKNOWN_URL_SCHEME)

当前Webpack配置

entry: {
  index: './src/index.tsx',
  'second-entry': './src/second-entry.ts',
},
devtool: 'source-map',
output: {
  path: path.resolve(__dirname, 'dist'),
  filename: '[name].js',
},
module: {
  rules: [
    babelRule,
    {
      test: /\.s?css$/,
      use: [
        MiniCssExtractPlugin.loader,// "style-loader",
        { loader: 'css-loader', options: { sourceMap: true } },
        { loader: 'sass-loader',  options: { sourceMap: true }, },
      ],
    },
  ],
},
plugins: [
  new HtmlWebpackPlugin({
    template: './src/editor-index.html',
    filename: 'editor-index.html',
    chunks: ['index'], // Specify the chunks to include in the HTML
  }),
  new MiniCssExtractPlugin({}),
],

Source Map对比

  • 添加sass-loader后的失效Map:
{
    "version": 3,
    "file": "index.css",
    "mappings": ";;;;AACE;EACE;AAAJ,C;;;;ACFA;EACE;AACF,C",
    "sources": ["webpack://editify-v2/./src/styles/delete.scss", "webpack://editify-v2/./src/styles/main.css"],
    "names": [],
    "sourceRoot": ""
}

缺少sourcesContent字段

  • 移除sass-loader后的正常Map:
{
    "version": 3,
    "file": "index.css",
    "mappings": ";;;;AAAA;EACE;IACE,uBAAuB;;EAEzB;AACF;;;;;ACLA;EACE,YAAY;AACd",
    "sources": ["webpack://editify-v2/./src/styles/delete.scss", "webpack://editify-v2/./src/styles/main.css"],
    "sourcesContent": [".button {\n  div{\n    background-color: 'red';\n\n  }\n}\n", ".app {\n  color: green;\n}\n"],
    "names": [],
    "sourceRoot": ""
}

依赖版本

"devDependencies": {
  "babel-loader": "^9.1.3",
  "css-loader": "^6.8.1",
  "html-webpack-plugin": "^5.5.3",
  "mini-css-extract-plugin": "^2.8.1",
  "postcss-loader": "^8.1.1",
  "sass": "^1.80.6",
  "sass-loader": "^16.0.3",
  "style-loader": "^3.3.3",
  "webpack": "^5.88.2",
  "webpack-cli": "^5.1.4",
  "webpack-dev-server": "^4.15.1",
}

注:使用sass而非已废弃的node-sass


解决方案

1. 强制sass-loader保留源内容

在sass-loader的配置中添加sourceMapContents: true,确保Sass编译时将源文件内容写入Source Map:

{
  loader: 'sass-loader',
  options: {
    sourceMap: true,
    sassOptions: {
      sourceMapContents: true
    }
  },
}

2. 优化css-loader的Source Map传递

显式设置importLoaders: 1,确保css-loader正确处理前置sass-loader生成的Source Map:

{
  loader: 'css-loader',
  options: {
    sourceMap: true,
    importLoaders: 1
  }
}

3. 检查MiniCssExtractPlugin配置

确保插件未禁用Source Map,默认情况下它会继承Webpack的devtool配置,无需额外设置,但如果有显式配置需确认:

new MiniCssExtractPlugin({
  filename: '[name].css'
})

4. 版本兼容性调整(可选)

尝试降级sass到1.77.x版本,部分新版本Sass的Source Map处理逻辑可能存在兼容性问题。


内容的提问来源于stack exchange,提问作者Kritidipto Ghosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:35:10