Node.js 18.0.0(当前版本)

Node.js 18.0.0(当前版本)

💡 原文英文,约900词,阅读约需3分钟。
📝

内容提要

Node.js 18版本引入了实验性的fetch API,基于undici实现,提供fetch和FormData等全局对象。请求和头部超时默认设置为60秒和5分钟,以防止拒绝服务攻击。node:test模块用于创建JavaScript测试,支持TAP格式。V8引擎更新至10.1版本,新增多个功能。Node.js不再支持过时操作系统,32位Windows二进制文件暂时缺失。

🔎

延伸解读

实验性 fetch API 的启用与禁用

Node.js 18 默认在全局作用域提供实验性的 fetch API,基于 undici 实现,同时暴露 FormData、Headers、Request、Response 等全局对象。这意味着开发者无需引入第三方模块即可发起 HTTP 请求。但该 API 仍处于实验阶段,可通过 --no-experimental-fetch 命令行标志禁用。在生产环境中使用前,需评估其稳定性,并关注后续版本的变化。

默认超时设置对服务器安全的影响

Node.js 18 将 server.headersTimeout 默认设为 60 秒,server.requestTimeout 默认设为 5 分钟。若超时,服务器会返回 408 状态码并关闭连接,且不会将请求转发给请求监听器。这两个超时旨在防御潜在的拒绝服务攻击,尤其是在服务器未部署反向代理时。开发者应注意,若需调整超时,必须设置为非零值以保持防护。

内置测试模块 node:test 的引入

Node.js 18 新增 node:test 模块,用于创建 JavaScript 测试并以 TAP 格式报告结果。该模块仅能通过 node: 协议访问,支持嵌套子测试。这为开发者提供了轻量级的测试方案,无需额外依赖。但需注意,它目前可能功能有限,适合简单场景,复杂测试仍可能需借助成熟测试框架。

平台支持变化与 V8 引擎更新

Node.js 18 不再支持供应商已停止支持的操作系统,如 Windows 8.1 和 Windows Server 2012 R2,支持终止日期与供应商结束支持日期一致。此外,32 位 Windows 预编译二进制文件暂时缺失,因 V8 依赖构建问题,未来 V8 更新后可能恢复。V8 引擎更新至 10.1,新增 findLast、findLastIndex 等方法,但序列化 API 的数据格式已变,旧版本无法反序列化新格式。

❓

Q&A

Node.js 18版本引入了哪些新特性?

Node.js 18版本引入了实验性的fetch API、node:test模块、V8引擎更新至10.1版本等新特性。

fetch API在Node.js 18中是如何实现的?

fetch API在Node.js 18中是基于undici实现的,提供了fetch和FormData等全局对象。

Node.js 18的请求和头部超时设置是什么?

Node.js 18的请求超时默认设置为60秒,头部超时为5分钟。

node:test模块的主要功能是什么?

node:test模块用于创建JavaScript测试,支持TAP格式的测试结果报告。

Node.js 18对操作系统的支持有哪些变化?

Node.js 18不再支持过时的操作系统,并且32位Windows二进制文件暂时缺失。

V8引擎在Node.js 18中更新了哪些功能?

V8引擎更新至10.1版本,新增了findLast、findLastIndex等多个功能。

🏷️

标签

➡️

继续阅读