前言
好消息,经过不知道多少年的讨论。
electron@28.0.0开始(23.08.31),默认支持esm了。
see
使用方法
- 升级至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。
其他事项
如果使用了sandbox, preload.js
还是在node环境中执行的,因此仍然采用require()
语法。
也能使用__filename
和 __dirname
。
见官方文档。