Node.js 22 发布:主要新特性与变更概览

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Node.js 22 发布:主要新特性与变更概览



JavaScript 开发者社区迎来了一个重要事件——Node.js 22 正式发布。此版本带来了众多改进,将影响后端开发者和命令行工具创建者。让我们来分析一下每个使用 Node.js 的人都应该知道的最重要的变化。



V8 引擎 12.4:速度与新功能

Node.js 22 的核心是更新后的 V8 引擎 12.4 版本。这不仅仅是外观上的升级——它带来了新的 JavaScript 特性,现在即可用于生产环境:

  • Array.fromAsync — 一个静态方法,用于从可迭代对象异步创建数组。简化了数据流处理。
  • Set 方法 — 直接调用 intersection()、union()、difference() 来处理集合,无需第三方库。
  • Iterator Helpers — 期待已久的迭代器操作方法(map、filter、take 等)现在“开箱即用”。


针对 ESM 模块的稳定 require()

最受讨论的变化之一是 --experimental-require-module 标志现在默认启用。这意味着您可以使用 require() 加载 ESM 模块(扩展名为 .mjs 或在 package.json 中设置 "type": "module")。

这对开发者意味着什么:

  • 无需重写所有代码即可逐步从 CommonJS 迁移到 ESM。
  • 能够在旧项目中引入现代 ESM 包。
  • 简化大型代码库的迁移过程。


改进的 WebSocket 与网络功能

Node.js 22 包含一个内置的 WebSocket 客户端(之前是实验性的)。现在,创建实时应用程序无需安装 ws 或 socket.io——一切都可以通过全局 WebSocket 对象使用。

同样值得注意的是 HTTP 客户端的改进:默认启用 HTTP/2 支持,并且现在可以使用 fetch() 自动从环境变量中检测代理。



文件系统操作的变更

处理文件的开发者将会欣赏 fs 模块中的新方法:

  • fs.cp — 现在稳定且比同类方法更快。
  • fs.openAsBlob() — 从文件创建 Blob,无需将整个文件加载到内存中。
  • 改进了对 Windows 上符号链接的支持。


已弃用和已移除的内容

与任何重大更新一样,一些功能已被标记为弃用或已移除:

  • punycode 模块已被最终移除(请使用 URL 或 npm 上的 punycode 包)。
  • 命令行参数 --experimental-loader 和 --experimental-specifier-resolution 已被弃用。
  • --no-experimental-fetch 选项不再有效——fetch 现已永久内置。


如何更新

Node.js 22 可在官方网站 nodejs.org 上下载。建议通过版本管理器(nvm 或 fnm)进行更新,以便在需要时快速回退。

推荐库