编程 Node.js 25.9.0 迁移:模块 mock 合并为 exports,AsyncLocalStorage 支持 using scopes

2026-10-07 21:03:40

Node.js 25.9.0 迁移:模块 mock 合并为 exports,AsyncLocalStorage 支持 using scopes

发布说明:Node.js 25.9.0 (2026-04-01) / Node.js 25.0.0

Test runner 模块 mock:defaultExport / namedExports 合并为 exports

MockModuleOptions.defaultExport 和 MockModuleOptions.namedExports 已合并为单个选项 MockModuleOptions.exports,以符合用户预期和其他测试运行器的行为。MockModuleOptions.exports 上的 default 属性表示默认导出,自身可枚举属性被视为命名导出。

自动迁移:

npx codemod @nodejs/mock-module-exports

25.9.0 其他值得注意的变化

  • async_hooks:为 AsyncLocalStorage 增加 using scopes(SEMVER-MINOR) #61674
  • cli:增加 --max-heap-size 选项 #58708
  • crypto:增加 TurboSHAKE 与 KangarooTwelve Web Cryptography 算法 #62183
  • repl:增加可自定义错误处理 #62188
  • sea:在 SEA 中支持 ESM 入口点的 code cache #62158
  • stream:增加 stream/iter 实现 #62066

另外:

  • 根证书更新到 NSS 3.121
  • 时区更新到 2026a
  • 废弃 module.register()(DEP0205)

Node.js 25.0.0 主要行为变化

Node.js 25.0.0 于 2025-10-15 发布,升级到 25.x 时需要留意以下变化:

  • V8 14.1:JSON.stringify 性能大幅提升;Uint8Array 获得原生 .toBase64()、.fromBase64()、.toHex()、.fromHex()。
  • Permission model 增加 --allow-net(限制进程可连接的主机名/IP)和 --allow-inspector。
  • Web Storage(localStorage / sessionStorage)默认启用,file-backed,按 origin 存放。
  • ErrorEvent 现在是全局对象。
  • Portable compile cache(--compile-cache)。
  • WebAssembly JSPI 启用。
  • Corepack 不再随 Node.js 分发。
  • 移除:fs.F_OK / R_OK / W_OK / X_OK 常量(使用 fs.constants.*);SlowBuffer 完全移除(使用 Buffer.allocUnsafe());assert.CallTracker 移除;assert.fail 多参数形式移除;_stream_* 内部模块废弃(从 node:stream 导入)。

支持状态

Node.js 25 是 Current 线;bug fixes 结束于 2026-04-01,安全修复结束于 2026-06-01(per versionlog)。生产用户应使用 LTS 线。

升级注意

  • 测试中仍在使用 MockModuleOptions.defaultExport / MockModuleOptions.namedExports 的地方,改为 MockModuleOptions.exports,或先跑 npx codemod @nodejs/mock-module-exports。
  • 使用权限模型时,检查 --allow-net 允许的 hostname/IP 列表;--allow-inspector 按需开启。
  • 依赖 Corepack 的流程需要单独安装 Corepack,Node.js 25 不再分发。
  • 替换已移除 API:SlowBuffer -> Buffer.allocUnsafe(),fs.F_OK 等 -> fs.constants.*,assert.CallTracker 和 assert.fail 多参数形式需要改写,_stream_* 改为从 node:stream 导入。
  • 升级前确认 module.register() 调用点;该方法已标记废弃(DEP0205)。
  • Web Storage 默认启用且按 origin 文件存储,测试和 SSR 环境需要关注状态残留与清理。
  • 新增的 --max-heap-size、stream/iter、TurboSHAKE / KangarooTwelve、REPL 自定义错误处理、SEA ESM code cache 可按需接入。

链接

复制全文 生成海报 Node.js JavaScript 测试 运行时 迁移

推荐文章

程序员茄子在线接单