



Node.js v25.9.0 已正式发布,这一版本包含多项值得关注的改进,尤其是在测试运行器模块 Mock、AsyncLocalStorage、CLI、Crypto、REPL、SEA、Stream 等方面都有明显增强。同时还包含大量底层修复、文档更新、依赖升级和测试补丁。
如果你正在使用 Node.js 开发服务端应用、工具链、测试框架,或者关注新版本对现有代码的影响,那么这次更新非常值得认真看一遍。下面我将按照“Notable Changes”和“Commits”中的内容,完整梳理 v25.9.0 的更新点,帮助你快速掌握这次版本升级的核心变化。
这次更新里,测试运行器模块的 Mock 机制是最重要的变化之一。
原先:
MockModuleOptions.defaultExportMockModuleOptions.namedExports这两个选项现在已经合并为一个统一选项:
MockModuleOptions.exports这样设计是为了更贴近用户直觉,也更符合其他测试运行器的习惯。
新的规则是:
MockModuleOptions.exports 上的 default 属性代表默认导出这意味着模块 Mock 的写法会更统一,也更容易理解。
同时,官方还提供了自动迁移方案,可以帮助用户将旧代码迁移到新写法。对于正在使用模块 Mock 的项目来说,这一项非常值得立即关注,因为它关系到测试代码的兼容性与维护成本。
async_hooks 相关能力也有增强,AsyncLocalStorage 新增了 using scopes 支持。
这对异步上下文管理是一个很实用的扩展,意味着在某些场景下,资源作用域与异步上下文的配合会更自然。对于关注请求链路上下文、日志追踪、异步隔离的开发者来说,这是一个有价值的增强。
--max-heap-size 选项命令行新增了 --max-heap-size 参数。
这意味着在启动 Node.js 进程时,可以更方便地控制堆内存大小,对内存敏感型应用、容器环境、性能调优场景都会有帮助。
crypto 方面新增了 TurboSHAKE 和 KangarooTwelve Web Cryptography 算法支持。
这属于面向加密能力的扩展,意味着 Node.js 的 Web Crypto 能力进一步增强,适合需要更丰富算法支持的场景。
REPL 新增了可定制错误处理能力,这会让交互式调试、命令行实验环境变得更灵活。
同时,REPL 还移除了对 domain 模块的依赖,这也是一次架构层面的简化。
SEA 现在支持为 ESM 入口点提供 code cache。
如果你在使用 SEA,这项改动对启动性能和打包体验都有潜在价值。
stream/iter 实现stream 模块新增了 stream/iter 实现,这意味着流式处理能力继续扩展。
同时,还配套增加了相关基准测试和测试用例,说明这一功能是带着完整验证进入版本的。
下面按照官方变更和提交内容逐项整理,确保不遗漏。
exports 的 default 属性表示默认导出async_hooks:为 AsyncLocalStorage 增加 using scopescli:新增 --max-heap-size 选项crypto:新增 TurboSHAKE 和 KangarooTwelve Web Cryptography 算法repl:增加可定制错误处理repl:移除对 domain 模块的依赖sea:支持 ESM 入口点的 code cachestream:新增 stream/iter 实现下面开始逐项展开全部提交内容。
AsyncLocalStorage 增加 using scopes这是异步上下文管理的重要增强。
stream/iter 增加基准测试--node-builtin-modules-path--max-heap-size 选项crypto::GetSSLCtx APICShakeParams 和 KmacParams 的 length 重命名为 outputLengthnormalizeAlgorithm 中只读取一次 algorithm name 属性module.register()(DEP0205)response.sendDate 中关于 Date header 的过度表述node:crypto 中 CryptoKey 的使用fs.ReadStream 和 fs.WriteStream 不是可构造的fs.stat 添加 throwIfNoEntry 版本历史mock.module 增加关于 customization hooks 的说明和注意事项--eval 对于以 - 开头脚本的语法cpSync 处理非 ASCII 字符的问题Target.getTargetsTargetManagerSubtleCrypto 中优先使用 primordialsSubtleCrypto.supports 变为可枚举stream/iter 的实现这部分是本次更新里非常值得关注的一组变化。stream/iter 的加入,让流式处理能力继续扩展;同时 pipeline 的错误处理逻辑也更清晰,避免 AbortError 覆盖真正的错误;而 onwrite 回调的优化,则属于实现细节上的调整,重点是更简洁和稳定。
stream/iter 实现增加测试test-cluster-dgram-reuse可以看到,这一批测试相关提交的密度很高,说明本次版本不仅在功能上有新增,也对稳定性做了大量验证。尤其是 WebCrypto、URL、调试器、AIX 兼容性、stream/iter 的测试补充,都体现出版本合入时的谨慎。
这部分与前面提到的 MockModuleOptions.exports 是直接对应的,也是本次测试运行器升级的核心实现之一。除此之外,兼容 fake timers 和错误退出码的改进,也会直接影响测试环境的使用体验和 CI 结果判断。
--check-for-duplicates 的 NCU 标志这部分主要是工具链和维护性改进,虽然不直接面向运行时功能,但对构建、文档、lint、CI 流程的稳定性都有重要意义。
这属于类型定义层面的整理,虽然表面上看是类型结构优化,但对 TypeScript 用户的开发体验会有帮助。
这是 URL 相关实现上的性能和底层优化方向的变化。
styleText 中允许使用颜色别名这会让文本样式处理更加灵活。
这扩展了 WebAssembly 与 ESM 之间的集成能力。
这属于 Worker 相关性能优化,重点是更好的内存分析和性能表现。
reset() 时导致的 use-after-free 问题这是一个非常关键的修复,涉及内存安全与稳定性,属于应该重点关注的 bugfix。
如果只从开发体验角度总结,Node.js v25.9.0 的变化可以归纳为几类:
测试运行器模块 Mock 的统一设计,让模块模拟更自然,减少概念混乱,也更利于迁移。
AsyncLocalStorage 增强后,对链路追踪、上下文传递、请求隔离等场景更友好。
CLI 新增的 --max-heap-size 对资源调优很实用。
新增算法、API 调整、底层处理优化,说明 Crypto 相关能力仍在持续演进。
交互式开发体验进一步增强。
Buffer、events、fs、stream、worker、zlib 等模块都能看到针对性能和安全的细节修复。
如果你属于以下几类开发者,建议重点查看 v25.9.0:
代码地址:github.com/nodejs/node
Node.js v25.9.0 这次更新非常全面,既有面向开发者的显性增强,也有大量底层和稳定性修复。最值得关注的几个关键词是:
--max-heap-sizestream/iter·
我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。
·