electron 切换至esm

前言

好消息,经过不知道多少年的讨论。

electron@28.0.0开始(23.08.31),默认支持esm了。

see

https://github.com/electron/electron/issues/21457

使用方法

  • 升级至electron@^28.0.0
  • 简单地在package.json中添加"type": "module"
  • 把所有.js 文件中的require, module.exports 改成 import from , export 语法。(除了preload.js)
  • 注意,esm的import语法中,文件后缀名.js不再能省略,必须显式提供。
  • 注意,esm中普通成员要用export { myFunc } 的方式提供。
  • 修复__filename__dirname缺失问题
js 复制代码
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename)

打包

直接用老版本工具打包会报错。

需要更新到 @electron/forge@&7.0.0 才能支持esm。

https://github.com/electron/forge/releases/tag/v7.0.0

其他事项

如果使用了sandbox, preload.js 还是在node环境中执行的,因此仍然采用require()语法。

也能使用__filename__dirname

见官方文档。

https://www.electronjs.org/zh/docs/latest/tutorial/esm

相关推荐
Hello--_--World2 分钟前
DOM事件流与事件委托、判断数据类型、深浅拷贝、对象遍历方式
前端·javascript
落魄江湖行5 分钟前
进阶篇二 Nuxt4 渲染模式:SSR/SSG/CSR 怎么选
前端·vue.js·typescript·nuxt4
M宝可梦8 分钟前
ReAct 与 LLM Agentic 范式:从推理到行动的完整技术科普
前端·react.js·前端框架
x-cmd10 分钟前
[260416] 谷歌 Chrome 推出 Skills 功能!帮你保存、复用提示词
前端·chrome·ai·自动化·agent·x-cmd·skill
色空大师11 分钟前
【Linux-安装nginx】
linux·运维·前端·nginx·部署
董董灿是个攻城狮15 分钟前
封了几百万个账号的 Claude, 路走窄了
前端
heytoo31 分钟前
同一个模型,为什么结果差10倍?差的不是模型
前端·agent
霪霖笙箫32 分钟前
「JS全栈AI学习」九、Multi-Agent 系统设计:架构与编排
前端·面试·全栈
慕斯fuafua34 分钟前
CSS——定位
前端·css
Cache技术分享34 分钟前
384. Java IO API - Java 文件复制工具:Copy 示例完整解析
前端·后端