跳转到主要内容

将我们的生态系统迁移到 Node 22

·阅读时间 2 分钟

2025 年初,Electron 的 npm 生态系统仓库(在 @electron/@electron-forge/ 命名空间下)将把 Node.js 22 作为最低支持版本。


这意味着什么?

过去,Electron 的 npm 生态系统中的包(Forge、Packager 等)会尽可能长时间地支持旧的 Node 版本,即使某个版本已达到其生命周期结束(EOL)日期。这样做是为了确保我们不会分裂生态系统——我们理解许多项目依赖于旧版本的 Node,并且除非有迫切的升级理由,否则我们不想冒险让这些项目陷入困境。

随着时间的推移,将 Node.js 14 作为我们的最低版本变得越来越困难,原因有以下几点:

  • 缺乏官方的 Node.js 14 macOS ARM64 构建版本,这要求我们维护 CI 基础设施的变通方案以提供完整的测试覆盖。
  • 上游包依赖项的 engines 要求已经提高,这使得通过依赖项升级来解决供应链安全问题变得越来越困难。

此外,较新版本的 Node.js 包含了许多我们希望利用的改进,例如运行时原生的常用工具(如 fs.globutil.parseArgs)以及全新的内置模块(如 node:testnode:sqlite)。

为何现在升级?

2024 年 7 月,Electron 的生态系统工作组决定,在未来某个时间点,当某个 Node 版本达到其 LTS 日期后,将所有包升级到支持 require() 同步 ESM 图的最早 Node 版本(参见 nodejs/node#51977nodejs/node#53500)。

我们决定将该更新时间定为 2025 年 1 月/2 月。此次升级后,Node 22 将成为现有生态系统包中支持的最低版本。

我需要采取什么行动?

我们将尽力保持兼容性。但是,为了确保获得最佳支持,我们鼓励您将应用升级到 Node 22 或更高版本。

请注意,您项目中运行的 Node 版本与您当前 Electron 版本中嵌入的 Node 版本无关。

下一步

如果您有任何问题或疑虑,请随时发送邮件至 info@electronjs.org。您也可以在我们官方的 Electron Discord 中寻求社区支持。