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

相关推荐
SsunmdayKT10 分钟前
前后端项目部署与运行机制全流程详解
前端·后端
本末倒置18310 分钟前
Vue 3 开发者转型 React 指南:保姆级教程
前端·javascript·vue.js
Reart13 分钟前
从0解构tinyWeb项目--(Day:10)
前端·后端·架构
牛蛙点点申请出战1 小时前
IconFontViewer -- 一个可以在 Android Studio 中实时预览 IconFont 的插件
android·前端·intellij idea
空中海1 小时前
03 渲染机制、性能优化与现代 React
javascript·react.js·性能优化
ChalesXavier2 小时前
Fetch API 的基本用法
javascript
是上好佳佳佳呀2 小时前
【前端(十三)】JavaScript 数组与字符串笔记
前端·javascript·笔记
巴沟旮旯儿2 小时前
vite项目配置文件和打包
前端·设计模式
彩票管理中心秘书长2 小时前
Pinia 插件架构与组合式函数:如何让你的 Store 长出“超能力”
前端