正式发布:Node.js 19版本

发表时间: 2022-10-19 10:40

出品|开源中国

Node.js 19 在今天正式发布了,此次更新包括将 V8 JavaScript 引擎更新到 10.7,以及默认启用 HTTP (s)/1.1 KeepAlive。

Node.js 18 在本月晚些时候将进入长期支持(LTS),Node.js 19 将取代 Node.js 18 成为 "Current" 版本。

node --watch(实验性)

运行时最近增加的一个令人兴奋的功能是支持使用 node --watch 选项在 "watch" 模式下运行。在 "watch" 模式下运行,当导入的文件被改变时,会重新启动进程。

$ node --watch index.js

该功能在 v19.0.0 和 v18.11.0+ 中可用。

默认启用 HTTP (S)/1.1 KeepAlive

从这个版本开始,Node.js 默认将 keepAlive 设置为 true。这意味着任何出站的 HTTP (s) 连接将自动使用 HTTP 1.1 Keep-Alive。默认的 keep-alive 时间是 5 秒。

启用 keep-alive 将提供更好的吞吐量,因为连接在默认情况下被重复使用。

稳定的 WebCrypto

WebCrypto API 现在已经稳定(以下算法除外:Ed25519、Ed448、X25519 和 X448)

使用 globalThis.cryptorequire('node:crypto').webcrypto 来访问这个模块。

自定义 ESM Resolution 调整

Node.js 已经删除了 --experimental-specifier-resolution 标志。其功能现在可以通过自定义加载器实现。

移除 DTrace/SystemTap/ETW 支持

对 DTrace/SystemTap/ETW 的支持在 v19.0.0 中被移除,主要原因是资源的优先级问题。

如果你有兴趣帮助恢复 DTrace,可以查看该 issue:https://github.com/nodejs/node/issues/44550。

依赖

V8 10.7

V8 引擎已经更新到 10.7 版本,这是 Chromium 107 的一部分。这个版本包括了 JavaScript API 的一个新特性: Intl.NumberFormat

Intl.NumberFormat v3 API 是一个新的 TC39 ECMA402 第三阶段提案,扩展了先前存在的 Intl.NumberFormat

llhttp

Node.js 19 搭载了 llhttp@8.1.0

npm

Node.js 19 搭载了 npm@8.19.2

Node.js 18 将进入 LTS

Node.js 18 系列将在下周过渡到长期支持版本。

生命周期

Node.js 14 将在 2023 年 4 月达到生命周期结束,因此建议用户开始计划升级到 Node.js 16(LTS)或 Node.js 18(LTS)。

Node.js 16 (LTS) 将在 2023 年 9 月达到生命周期结束,比原计划 2024 年 4 月提前了。