「Temporal API现在默认启用。」Rafael Gonzaga在5月5日的发布公告里用这句话,宣告了JavaScript日期处理的一个时代切换。Node.js 26来了,带着一批新能力和更狠的清理动作。

Temporal转正:Date对象的继任者

打开网易新闻 查看精彩图片

Temporal API在Node.js 26中默认开启。这是一个原生的日期时间处理方案,设计目标直指老Date对象的痛点——时区混乱、计算不可靠、API设计反直觉。

打开网易新闻 查看精彩图片

Richard Lau提交的#61806号补丁完成了这项工作。对每天要和ISO 8601、夏令时、跨时区计算打交道的后端开发者来说,这意味着不必再依赖moment.js或date-fns这类库处理复杂时序逻辑。

Temporal的野心很大:成为JavaScript生态的日期时间标准。Node.js这一步,等于给浏览器端的最终统一铺了路。

V8 14.6:两个新语法落地

JavaScript引擎升级到V8 14.6.202.33,随Chromium 134发布。Michaël Zasso负责的这次更新带来两个TC39提案的实现:

Upsert操作。Map和WeakMap新增了getOrInsert()getOrInsertComputed(),解决「查不到就插入」的样板代码问题。以前需要三行判断,现在一行链式调用。

迭代器拼接。Iterator.concat()让多个可迭代对象的顺序遍历变得更干净,处理流式数据或分页结果时少写不少胶水代码

编译工具链也有硬性变化:GCC最低版本要求提升到13.2。还在用旧编译环境的CI管道需要更新了。

Undici 8:HTTP客户端迭代

Node.js内置的HTTP客户端Undici升级到8.0.2。这个由Node.js核心团队维护的库,正在逐步取代老旧的http模块成为事实标准。

版本号跳major通常意味着行为变更。虽然公告没列具体细节,但依赖Undici做请求转发的中间件和网关,测试覆盖要重新跑一遍。

清理清单:这些API彻底没了

Node.js 26的破坏性变更比往常更密集。Sebastian Beltran主导移除了三块历史包袱:

http.Server.prototype.writeHeader()完全删除。这个方法从Node.js 0.x时代就标记废弃,现在终于下线。正确写法是writeHead(),参数顺序和语义都更清晰。

打开网易新闻 查看精彩图片

六个_stream_*内部模块删除。_stream_wrap_stream_readable_stream_writable_stream_duplex_stream_transform_stream_passthrough——这些带下划线的老接口,曾经是stream模块的底层实现细节。直接require它们的代码会崩溃。

加密模块的DEP0182进入End-of-Life。Tobias Nießen提交的变更,意味着相关API不再只是警告,而是直接不可用。

还有四项运行时废弃(runtime deprecation)正在生效:DEP0203、DEP0204涉及crypto,DEP0201涉及stream,module.register()调用方式也在列。这些不会立即中断应用,但stderr里的警告会逼你重构。

最值得关注的是--experimental-transform-types标志的移除。Marco Ippolito的补丁意味着TypeScript实验性支持的路径调整——之前依赖这个flag做类型剥离的项目,需要迁移到新的模块加载方案。

版本策略:六个月窗口期

Node.js 26现在是「Current」版本,这种状态会持续到2026年10月。之后进入长期支持(LTS),届时企业环境的采纳门槛才会真正降低。

Rafael Gonzaga的措辞很直接:「鼓励你探索新功能,评估对应用的潜在影响。」翻译一下——生产环境别急着上,但CI里跑测试、本地开发尝鲜,现在就该开始了。

一个细节:assert模块现在支持printf风格的错误消息。Ruben Bridgewater的#58849号补丁让调试信息格式化更灵活,这对写测试用例的人是小事,对维护大型测试套件的人是省时间的改进。

判断:这不是温和升级

Node.js 26的发布策略很清晰——用六个月Current期逼社区面对技术债。Temporal和V8新特性是诱饵,stream和http的清理才是真实成本。

直接依赖内部模块_stream_*的老项目,升级等于强制重构。混用writeHeaderwriteHead的遗留代码,会在启动时直接抛错。这种不兼容是设计好的:Node.js核心团队在用版本号谈判,换取生态的长期健康。

对技术决策者的实用建议:把--pending-deprecation--throw-deprecation加进CI配置,在Node.js 26上跑完全量测试。警告清单就是你的迁移路线图。Temporal的迁移可以缓,但废弃API的清理必须排进Q3迭代。