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

相关推荐
deli0078 分钟前
DLA 枝晶生长实测:5000 个粒子集体停摆之后,分形维数收敛到 1.70
前端
IT_陈寒17 分钟前
Redis卡顿的锅,这次真不是大key的错
前端·人工智能·后端
可乐鸡翅yeah_23 分钟前
video.js 集成 hls.js 开发 M3U8 播放器,新手高频踩坑
开发语言·前端·javascript·后端·ecmascript·m3u8·音视频在线播放
程序猿追1 小时前
HarmonyOS 6 上做个极简浏览器:Web 组件 + 前进后退 + 加载进度
前端·华为·harmonyos
沐沐师1 小时前
Mybatis 框架教程
前端
三天不学习1 小时前
Tailwind CSS 快速入门(2026 版):从 v4 零配置上手,到「该不该用、怎么用好」的选型实战
前端·css·tailwind
明月_清风1 小时前
面对陌生的 GitHub 项目无从下手?这 4 个网站帮你快速读懂源码
前端·后端·github
htzyl2062 小时前
前端阶梯——第九章、颜色、文本与背景
前端·css
zhangzeyuaaa2 小时前
Ruby `require` 完全指南:从 `$LOAD_PATH` 到 `require_relative`
服务器·前端·ruby
htzyl2062 小时前
前端阶梯——第八章、CSS入门与选择器
前端·css