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

React+Electron+Realm项目引入组件报ES Module require不支持错误

核心原因

报错是Electron默认采用CommonJS模块加载规范,但是引入Signin组件后,构建产物触发了对@babel/runtime下ESM格式辅助函数的require调用,CommonJS不支持直接导入ES模块,因此抛出错误。未引入Signin时没有用到对应Babel辅助函数,所以运行正常。

解决方案

  • 修改Babel配置,强制使用CommonJS格式辅助函数
    找到项目中Babel配置文件(.babelrc、babel.config.js等),修改@babel/plugin-transform-runtime的配置项,关闭ES模块模式:

    {
      "plugins": [
        ["@babel/plugin-transform-runtime", {
          "useESModules": false
        }]
      ]
    }
    

    配置后Babel会统一调用CommonJS版本的辅助函数,不会再加载esm目录下的ES模块文件。

  • 调整CRACO构建的externals规则
    如果你使用CRACO修改Create React App构建配置,检查是否将@babel/runtime设为了外部依赖,要求Electron直接从node_modules加载。如果存在该配置,将@babel/runtime从externals列表中移除,让webpack将其打包进最终产物,规避Node侧的模块规范冲突。

  • 修正BrowserWindow配置
    在Electron主进程创建窗口的代码中,调整webPreferences参数,关闭不必要的Node集成,避免渲染进程直接调用Node的require加载前端依赖:

    new BrowserWindow({
      // 你的窗口其他配置
      webPreferences: {
        nodeIntegration: false,
        contextIsolation: true,
        preload: path.join(__dirname, 'preload.js') // 用preload脚本处理Node能力调用
      }
    })
    
  • 对齐Babel相关依赖版本
    确认项目中@babel/runtime和@babel/plugin-transform-runtime的版本号完全一致,避免版本不匹配导致的加载路径错误。

以上配置修改完成后重新执行构建即可生效。

内容的提问来源于stack exchange,提问作者Valentin Cournée

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:54:00