本文主要是介绍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
缺失问题
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename)
其他事项
应该知道,electron只是内置了esm
包把esm模块转成了cjs,然后在node环境中执行。
所以 preload.js
还是在node环境中执行的,因此仍然采用require()
语法。
也能使用__filename
和 __dirname
。
这篇关于electron 切换至esm的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!