chrome 在不同 "area" 中加载的 Webpack 5 sourcemap - 无法调试

Webpack 5 sourcemap loaded by chrome in different "area" - unable to debug

我有两个 React 组件 - 我希望能够在 chrome 中调试 jsx。

当我加载页面时,我在预期的位置看到了我的组件代码(使用内联源映射)

源映射正在加载(它可以与单独的源映射文件一起使用,也可以内联) 但它会加载到 chrome 中“页面”菜单下的另一个部分。

我在这里看到了我的 jsx 代码。如果我放置一个断点(比如上图中的第 7 行),它将在我的缩小代码中添加相应的断点。但是,如果我“命中”断点,它将命中缩小的代码而不是我原来的 jsx(我认为 chrome 中的 sourcemaps 是可能的?)

我以前使用过 webpack 的源地图 - 但我不记得遇到过这个问题并且没有任何运气搜索 Whosebug/google。


这是我的Webpack.Config

const path = require('path');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

const SourceMapDevToolPlugin = require('webpack/lib/SourceMapDevToolPlugin');

const webpackEntries = {
  SavingsGoalAccount: './src/SavingsGoalAccount.jsx',
  SavingsGoalsList: './src/SavingsGoalsList.jsx',
};

module.exports = {
  mode: 'production',
  entry: webpackEntries,
  //devtool: "inline-source-map",
  devtool: 'source-map',
  output: {
    path: path.join(__dirname, 'dist'),
    filename: '[name].[contenthash].js',

    library: {
      type: 'umd',
      name: '[name]',
    },
    globalObject: 'this',
  },
  resolve: {
    extensions: ['.js', '.jsx'],
  },
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        loader: 'babel-loader',
        exclude: /node_modules/,
      },
      {
        test: /\.(css)$/,
        use: [MiniCssExtractPlugin.loader, 'css-loader'],
      },
      {
        test: /\.s[ac]ss$/i,
        use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader'],
      },
    ],
  },

  externals: {
    react: {
      root: 'React',
      commonjs2: 'react',
      commonjs: 'react',
      amd: 'react',
    },
  },
  optimization: {
    moduleIds: 'deterministic',
    splitChunks: {
      cacheGroups: {
        vendor: {
          test: /[\/]node_modules[\/]/,
          name: 'vendors',
          chunks: 'all',
        },
      },
    },
  },
  plugins: [
    new CleanWebpackPlugin({
      cleanOnceBeforeBuildPatterns: [path.join(__dirname, 'dist/**/*')],
    }),
    new MiniCssExtractPlugin(),
  ],
};

它按预期在我的 dist 文件夹中输出:

因为您将 devTool 值用作 source-map。它将加载您编写的原始代码作为源映射。这也发生在我身上,我根据需要将 devTool 值更改为不同的值。

根据 webpack 文档 - https://webpack.js.org/configuration/devtool/#devtool

如果质量是原始的,那么它将加载整个代码: quality: original- You will see the original code that you wrote, assuming all loaders support SourceMapping.

如果你不需要它。请根据您的需要选择一个选项。