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

Electron主进程原生使用ES Module import语法报错如何解决?

结论

你的需求可通过原生方式实现,但受Electron版本限制,你当前使用的v13.x版本无法满足要求,需升级至Electron 28.0.0及以上版本。

版本限制说明

Electron主进程对原生ESM(ES Module)的官方支持从28.0.0版本才正式上线。低于该版本的Electron内置默认启动逻辑会通过require()加载用户指定的入口文件,而require()不支持加载标记为ESM的模块,因此会出现你遇到的ERR_REQUIRE_ESM报错,该逻辑是底层硬编码的,无原生配置可修改。

满足约束的原生实现步骤

仅需升级Electron版本后做少量调整即可,完全符合你提出的两项使用约束:

  1. 升级Electron至符合要求的版本
npm i -D electron@latest
  1. 保留package.json中的"type": "module"配置,无需修改其他字段
  2. 修正主进程代码的导入错误:主进程中无法使用仅属于渲染进程的ipcRenderer模块,需替换为ipcMain,修改后的index.js代码如下:
import { app, BrowserWindow, Menu, ipcMain } from 'electron';
  1. 执行npm run start即可正常启动
低版本兼容说明

如果你必须使用Electron v13.x版本,没有任何原生方案可以同时满足你提出的两项约束,只能选择以下不符合约束的方案:

  • 使用CommonJS的require语法导入模块
  • 引入打包工具(如vite、rollup、webpack)将ESM代码转译为CJS代码后运行

内容的提问来源于stack exchange,提问作者Bronislav Klučka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:15:03