2.3. 技术预览功能


在 Node.js 20 LTS 发行版本中,以下功能作为技术预览功能提供。

2.3.1. 实验性 WASI 功能增强

实验性 WebAsembly 系统接口(WASI)功能在此发行版本中包括以下改进:

  • WASI 不再需要使用 experimental-wasi-unstable-preview1 命令行界面(CLI)标记来启用此功能。此功能增强有助于使 WASI 更易于使用。
  • WASI 现在要求任何新的 WASI () 调用都包含 version 选项来请求特定的 WASI 版本。因为 Node.js 支持不同版本的 WASI,且 version 选项没有默认值,所以您必须确保应用程序中的所有新 WASI () 调用都请求特定版本。否则,错误结果。

如需更多信息,请参阅 Node.js WebAssembly System Interface (WASI)文档

2.3.2. 权限模型

红帽构建的 Node.js 20 引入了实验性权限模型功能。此功能使开发人员能够限制在程序执行过程中对特定资源的访问,如文件系统操作、子进程生成和 worker 线程创建。这意味着,您可以防止应用程序访问或修改敏感数据,或者运行潜在的代码。

您可以使用 --experimental-permission CLI 标志启用 Permission Model 功能。通过启用此功能,您可以自动限制对所有可用权限的访问。

要管理权限,您可以使用以下 CLI 标志:

  • 要管理文件系统权限,请使用 --allow-fs-read--allow-fs-write 标志。
  • 若要管理子进程权限,可使用 --allow-child-process 标志。
  • 要管理 worker 线程权限,请使用 --allow-worker 标志。

如需更多信息,请参阅 Node.js 权限模型文档

2.3.3. 追踪频道

红帽构建的 Node.js 20 引入了 TracingChannel 类,作为 Diagnostics Channel 功能的实验性扩展。追踪频道有助于对诊断频道进行分组,这些频道代表单个可追踪操作执行生命周期的不同点,用于生成和使用 trace 数据。因此,追踪频道有助于规范化和简化为追踪应用程序流生成事件的过程。

如需更多信息,请参阅 Node.js TracingChannel 文档

2.3.4. Mock Timers

红帽构建的 Node.js 20 引入了一个实验性的 Mock Timers 功能,可让开发人员为依赖计时器的功能编写更可预测且可靠的测试。计时器模拟是一种常用的技术,可用于模拟和测试计时器行为,而无需等待指定的时间间隔。Mock Timers 功能包含一个 MockTimers 类,可让您从全局对象和 node:timers /promises API 中模拟对 setTimeout ()setInterval () 方法的调用。

Mock Timers 功能提供了一个简单的 API,用于提前时间,启用特定的计时器,并释放所有计时器。

例如:

import assert from 'node:assert';
import { test } from 'node:test';

test('mocks setTimeout to be executed synchronously without having to actually wait for it', (context) => {
  const fn = context.mock.fn();
  // Optionally choose what to mock
  context.mock.timers.enable(['setTimeout']);
  const nineSecs = 9000;
  setTimeout(fn, nineSecs);

  const threeSeconds = 3000;
  context.mock.timers.tick(threeSeconds);
  context.mock.timers.tick(threeSeconds);
  context.mock.timers.tick(threeSeconds);

  assert.strictEqual(fn.mock.callCount(), 1);

如需更多信息,请参阅 Node.js Mocking: Timers 文档

2.3.5. 内置 .env 文件支持

红帽构建的 Node.js 20 引入了一个实验性功能,用于在 .env 文件中配置环境变量,该文件在启动时传递给 Node.js 应用程序。与 .ini 文件格式类似,.env 配置文件中的每一行包含特定环境变量的键值对。例如:

PASSWORD=nodejs

您可以使用 --env-file 标志,使用预定义的环境变量初始化并运行 Node.js 应用程序。例如:

node --env-file=myconfig.env myapp.js

按照上例所示初始化应用程序时,您可以使用 process.env 属性访问相关的环境变量。例如,若要访问 PASSWORD=node.js 环境变量,您可以使用 process.env.PASSWORD 属性。

此功能增强还允许您在 .env 配置文件中定义 NODE_OPTIONS 环境变量,无需在 package.json 文件中包含 NODE_OPTIONS

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部