Skip to main content

版本特性

23.x

  • 原生支持ts

20.x.x

分类更新内容
New Feature1. 权限模型(实验性):通过 --experimental-permission 控制文件系统、子进程、Worker 等资源的访问权限。
2. 测试运行器稳定化:内置测试框架支持更完善的测试编写和执行流程
3.
单一可执行应用(SEA):通过注入 Blob 构建独立二进制文件,支持多资源嵌入。
4.
V8 引擎升级至:支持 5 个新特性,提升性能**。
Break Change1. 停止维护 Node.js 14:2023 年 4 月 30 日终止维护。
2. 默认禁用顶层 await:ESM 模块需显式声明 "type": "module"
Fix1. 性能优化:URL 解析、fetch() 和 EventTarget 初始化速度提升,Ada 2.0 解析器优化。
2. ARM64 Windows 原生支持:提供官方二进制包并完善 CI 测试1

19.x.x

分类描述
New Feature
实验性 Watch 模式新增 node --watch 标志,监控文件变动后自动重启进程(如 node --watch index.js),替代第三方工具 nodemon,支持 v19.0.0 和 v18.11.0+
默认启用 HTTP KeepAlive所有 HTTP(S) 出站请求默认开启 keepAlive: true,连接复用时长 5 秒,减少重复建立 TCP 连接的开销,提升吞吐量
稳定的 WebCrypto APIEd25519Ed448X25519X448 算法外,其他 WebCrypto 接口标记为稳定,可通过 globalThis.cryptorequire('node:crypto').webcrypto 访问
V8 引擎升级至 10.7支持 Intl.NumberFormat v3 API(ECMA-402 第三阶段提案),优化国际化数字格式化功能(如货币、单位显示)
自定义 ESM 加载器移除 --experimental-specifier-resolution 标志,ES Modules 解析逻辑需通过自定义加载器实现(如远程模块或格式转换)
工具链升级集成 npm@8.19.2llhttp@8.1.0,提升依赖管理和 HTTP 解析性能
Fix
安全性增强修复 OpenSSL 相关漏洞(如 CVE-2024-27980),需升级至 19.x 最新补丁版本
Break Change
移除 DTrace/SystemTap/ETW 支持因维护成本过高,移除动态追踪工具支持,影响性能监控和调试(需改用第三方工具如 perfasync_hooks
废弃实验性标志移除 --experimental-specifier-resolution,需通过自定义加载器实现模块解析扩展
OpenSSL 3.0 兼容性调整默认禁用 MD4/MD5 等不安全算法,旧项目需添加 --openssl-legacy-provider 临时兼容

ERR_UNSUPPORTED_DIR_IMPORT报错

当尝试导入一个目录(如import './utils'),如果没有明确指定文件扩展名或索引文件,Node.js会报错ERR_UNSUPPORTED_DIR_IMPORT,这时候,--experimental-specifier-resolution=node参数的作用就显现出来了,它允许Node.js像处理CommonJS模块一样解析目录和文件扩展名。

--experimental-specifier-resolution=node

// 改用自定义加载器(示例)
import { resolve } from 'node:module';
export async function load(url, context, nextLoad) {
if (url.endsWith('.json')) {
return { format: 'json', source: await fs.readFile(url) };
}
return nextLoad(url, context);
} [3,5](@ref)

18.x.x

New Feature
全局 Fetch API默认集成实验性全局 fetchFormDataHeaders 等 API,底层基于高性能 HTTP 客户端库 undici。支持异步请求标准化,替代复杂的 http.request 回调逻辑。
官方 Test Runner新增 node:test 模块,支持 TAP 格式的测试输出,无需依赖 Mocha/Jest。支持并发测试(concurrency 选项)、跳过/聚焦测试(skip/only),但暂缺生命周期钩子(如 beforeEach)。
V8 引擎升级至 10.1支持 Array.prototype.findLastIntl.DisplayNames 等新特性,优化类字段和私有方法的性能
Web Streams API实验性全局暴露 ReadableStreamTransformStream 等流处理接口,与浏览器规范对齐
Build-time Snapshot支持将 JS 代码编译为 V8 快照,加速启动性能(需通过 Node.js 源码编译)
OpenSSL 3.0集成 OpenSSL 3.0,默认禁用 MD4/MD5 等不安全算法,增强 TLS 安全性
工具链升级预编译二进制文件兼容性提升(如 Linux 基于 RHEL 8,macOS 最低支持 10.15)
Fix
安全漏洞修复修复 OpenSSL 3.0 的算法兼容性问题(如 CVE-2024-27980 命令注入漏洞)需升级至 18.18+ 版本。
内存泄漏优化优化 httpstream 模块的资源释放逻辑,减少高并发场景的内存泄漏
Break Change
OpenSSL 算法限制默认禁用 MD4/MD5,旧项目可能报错 ERR_OSSL_EVP_UNSUPPORTED,需添加 --openssl-legacy-provider 临时兼容
废弃旧版 API移除 process.binding('http_parser'),改用 llhttp 的 JavaScript 实现
  • Node.js 18 于 2022-10-25 成为 LTS,支持至 2025-04-30,建议生产环境优先使用 18.18+ 稳定版本

  • OpenSSL 3.0 问题:若遇到加密算法错误,可通过以下方式解决

    export NODE_OPTIONS=--openssl-legacy-provider

17.x.x

分类描述
New Feature
基于 Promise 的核心模块 API新增 node:readline/promises 模块的 Promise API 支持,简化异步交互逻辑(如终端输入读取)
错误堆栈增强在致命错误的堆栈尾部添加 Node.js 版本信息,帮助诊断环境兼容性问题(可通过 --no-extra-info-on-fatal-exception 禁用)
OpenSSL 3.0 支持集成 OpenSSL 3.0,提供更严格的算法限制(如默认禁用 MD4),增强安全性
V8 引擎升级至 9.5新增 Intl.DisplayNames API 的 calendardateTimeField 类型,支持国际化扩展
实验性模块加载器(Module Loader)提供 resolveload 钩子,允许自定义 ES Modules 的解析与加载逻辑(如远程模块、格式转换)
Fix
内存泄漏修复优化 httpstream 模块的资源释放逻辑,修复特定场景下的内存泄漏问题
安全性增强修复 OpenSSL 3.0 导致的算法兼容性问题(如 MD4 报错 ERR_OSSL_EVP_UNSUPPORTED),提供临时解决方案 --openssl-legacy-provider
Break Change
OpenSSL 3.0 算法限制默认禁用非安全算法(如 MD4),导致依赖旧算法的代码报错,需显式启用兼容模式或升级依赖
实验性功能警告未显式启用 --experimental-loader--openssl-legacy-provider 时,可能触发警告或错误

16.x.x

分类描述
New Feature
V8 引擎升级升级至 V8 9.0,支持新特性如 Array.prototype.atObject.hasOwn 和 Error 堆栈格式优化。
稳定的 AbortControllerAbortControllerAbortSignal 标记为稳定 API,支持异步操作中断(如 fetchfs.readFile)。
Node-API 版本 5新增 Node-API 版本 5,支持更多原生插件功能(如线程安全的数据类型操作)。
实验性 Web Streams引入 ReadableStreamWritableStream 的实验性实现(需通过 --experimental-streams 启用)。
完全支持esES模块不再需要--experimental-modules
Fix
内存泄漏修复修复 cluster 模块在频繁创建子进程时未正确清理句柄的问题。
安全性修复升级 OpenSSL 至 1.1.1k,修复 TLS 1.3 的 SSL_has_pending 漏洞(CVE-2021-3449)。
文件系统改进修复 fs 模块在同步方法中使用符号链接时可能导致的竞态条件。
Break Change
移除旧版 API彻底移除已废弃的 process.binding('http_parser'),改用 llhttp 的 JavaScript 实现。
模块加载策略调整ES Modules 默认启用 条件性导包(基于 package.json"type": "module"),不再需要 --experimental-modules
废弃旧版工具标记 crypto.createDeciphercrypto.createCipher 为遗留方法,推荐使用 crypto.createCipheriv

15.x.x

New Feature
AbortController新增实验性 AbortControllerAbortSignal 接口(需通过 --experimental-abortcontroller 启用),支持异步操作中断。
npm 7 集成默认集成 npm 7,支持工作区(Workspaces)、自动安装 peerDependencies 和依赖冲突优化。
诊断工具增强新增 --heapsnapshot-near-heap-limit 参数,在堆接近内存限制时自动生成快照。
QUIC 协议改进实验性 QUIC 实现更新至最新草案版本,支持多流复用和错误处理优化。
Fix
内存泄漏修复修复 http 模块在处理长时间挂起请求时未释放底层套接字的问题。
安全性修复升级 OpenSSL 至 1.1.1i,修复 CVE-2020-1971(EDIPartyName 解析漏洞)。
编译问题修正修复 Windows 平台下使用 Node-API 时的动态链接库加载错误。
Break Change
V8 引擎升级升级至 V8 8.6,移除旧版 API(如 v8::Isolate::GetCurrentContext 的非安全用法)。
默认启用实验性警告启用 --experimental-modules--experimental-wasi 的实验性警告,未显式启用时可能报错。
废弃 timers 方法废弃 timers.enroll()timers.unenroll(),改用 setTimeoutsetInterval

14.x.x

分类描述
Break Change
V8 引擎升级升级至 V8 8.1,移除了部分旧版 API(如 Error.prepareStackTrace 的非标准用法可能导致兼容性问题)。
废弃 Buffer 构造函数完全移除 new Buffer() 构造函数(需改用 Buffer.alloc()Buffer.from() 以避免安全问题)。
模块系统ES Modules 支持更稳定,但默认仍需要 --experimental-modules 标志(逐步向标准过渡)。
New Feature
异步上下文跟踪新增 AsyncLocalStorage API(稳定化),支持异步操作中的上下文隔离与状态管理。
诊断工具增强新增 --cpu-prof--heap-prof 参数,支持生成 CPU/堆性能分析文件。
WebAssembly 系统调用实验性支持 WASI(WebAssembly 系统接口),允许 Wasm 模块访问文件系统等操作系统资源。
Stream 可写接口改进新增 writableFinishedwritableCorked 属性,优化流控制逻辑。
Fix
内存泄漏修复修复 http2 模块在处理大量请求时可能未正确释放内存的问题。
安全性修复升级 OpenSSL 至 1.1.1g,修复 TLS 1.3 握手过程中的潜在漏洞(CVE-2020-1967)。
编译问题修正修复 macOS 和 Windows 平台下构建时的兼容性错误(如 Node-API 头文件路径问题)。

13.x.x

分类描述
New Feature
QUIC 协议支持新增实验性 net 模块的 QUIC 实现(需通过 --experimental-quic 启用),支持 HTTP/3 草案。
诊断工具增强--diagnostic-report 升级为稳定功能,支持按需生成报告(替代旧版 --report)。
堆分析功能新增 v8 模块的 writeHeapSnapshot 方法,可直接生成堆快照文件。
启动时预加载支持 --require 参数预加载模块(如 --require=esm),优化 ES Modules 的启动流程。
支持原生ES语法package.json添加"type": "module"
Break Change
默认模块解析策略ES Modules 的 --experimental-modules 仍需要,但默认启用 条件性导包(根据 type: modulepackage.json)。
废弃 url.parse标记 url.parse 为遗留方法,默认禁用对非标准 URL 的宽松解析(需通过 url.parse(urlString, true) 启用严格模式)。
移除旧版 API移除已废弃的 async_hooks 旧版 API(如 asyncResource.triggerId),需使用新版上下文跟踪接口。
Fix
内存泄漏修复修复 http 模块在连接中断时未正确释放资源的漏洞。
安全性修复升级 OpenSSL 至 1.1.1d,修复 TLS 1.3 会话恢复漏洞(CVE-2019-1549)。
编译问题修正修复 Windows 平台下使用新版 Node-API 时的编译错误。

12.x.x

分类描述
Break Change不兼容更新
V8 引擎升级升级至 V8 7.4,移除了部分已废弃的 API(如 v8::Promise 旧接口),可能导致部分 Native 模块不兼容。
默认 HTTP 解析器替换为 llhttp(替代旧版 http-parser),解析行为可能有细微差异(如严格模式下的标头格式)。
模块系统对未捕获的异常,ES Modules 的加载错误会触发 process.on('unhandledRejection')(旧版为同步抛出)。
New Feature新功能
首次引入ES支持node --experimental-modules node.js
诊断报告新增实验性功能 --report,可生成运行时的诊断报告(内存、CPU、句柄等信息)。
TLS 1.3 支持默认启用 TLS 1.3(需 OpenSSL 1.1.1 支持),提升安全性。
启动性能优化通过 V8 快照技术,减少启动时间约 30%。
Worker Threads改进 Worker 线程的实验性 API,支持 worker.postMessage()SharedArrayBuffer
Fix修复
内存泄漏修复修复 http2 模块在流销毁后未正确释放内存的问题。
错误处理修复 async_hooks 在特定场景下导致栈溢出的问题。
安全性修复升级 OpenSSL 至 1.1.1b,修复多个安全漏洞(如 DSA 签名漏洞 CVE-2019-1547)。