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

Electron+React项目引入react-chartjs-2时的Webpack加载错误问题

问题解决:Electron+React中引入react-chartjs-2的编译错误

问题根源

第一个编译错误是因为chart.js源码里用到了类静态属性(static defaults = {})这类ES6+语法,你的Webpack配置里babel-loader排除了所有node_modules目录,导致Babel没有转译chart.js和react-chartjs-2的代码,Webpack无法识别这些语法。

你尝试安装cjs-loader的思路有误,这个Loader本身使用了ES模块的import语法,在CommonJS环境下运行自然会报错。

修复步骤

修改webpack.common.js中的Babel-loader规则,把chart.js和react-chartjs-2从排除列表中移除,让Babel处理这两个依赖:

const path = require('path');

module.exports = {
  mode: 'development',
  entry: './src/js/index.js',
  devtool: 'inline-source-map',
  target: 'electron-renderer',
  module: {
    rules: [
      {
        test: /\.js$/,
        // 排除node_modules,但保留chart.js和react-chartjs-2
        exclude: /node_modules\/(?!(chart.js|react-chartjs-2)\/)/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: [[
              '@babel/preset-env', {
                targets: {
                  esmodules: true
                }
              }],
              '@babel/preset-react']
          }
        }
      },
      {
        test: [/\.s[ac]ss$/i, /\.css$/i],
        use: [
          'style-loader',
          'css-loader',
          'sass-loader',
        ],
      }
    ]
  },
  resolve: {
    extensions: ['.js'],
  },
  output: {
    filename: 'app.js',
    path: path.resolve(__dirname, 'build', 'js'),
  },
};

验证操作

  1. 删除node_modules/.cache目录(如果存在),清理Webpack缓存
  2. 重新运行构建命令,即可正常编译

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:45:29