跳转到内容
搜索文档

Node.js 兼容性

最后更新 查看 MarkdownAgent 设置

编写 Worker 时,你可能需要从 npm 导入包。许多 npm 包依赖 Node.js 运行时 的 API,若这些 Node.js API 不可用,它们将无法工作。

Cloudflare Workers 以两种形式提供 Node.js API 的子集:

  1. 作为 Workers 运行时提供的内置 API。其中大多数 API 是对应 Node.js API 的完整实现,少数为部分支持。
  2. 作为 polyfill 垫片实现,由 Wrangler 添加到你的 Worker 代码中,允许导入模块,但调用 API 方法会抛出错误。

快速入门

要启用内置 Node.js API 并添加 polyfill,请在你的 Wrangler 配置文件 中添加 nodejs_compat 兼容性标志,并确保 Worker 的兼容性日期为 2024-09-23 或更晚。详细了解 Node.js 兼容性标志和 v2

{
	"compatibility_flags": ["nodejs_compat"],
	// Set this to today's date
	"compatibility_date": "2026-08-17",
}
compatibility_flags = [ "nodejs_compat" ]
# Set this to today's date
compatibility_date = "2026-08-17"

支持的 Node.js API

本节中列出的 Node.js 运行时 API,状态为「🟢 已支持」的,目前在 Workers 运行时中原生支持。状态为「🟡 部分支持」的项包含可用的 API,但未实现完整的 Node.js API 表面。

Node.js 中已弃用或实验性的 API,以及不适合无服务器上下文的 API,未包含在本节的支持 API 列表中。其中一些仅用于导入的桩模块在非功能性桩模块中单独列出。

API 名称 Workers 运行时原生支持
断言测试 🟢 已支持
异步上下文跟踪 🟢 已支持
Buffer 🟢 已支持
Console 🟡 部分支持
Crypto 🟢 已支持
Debugger 🟢 通过 Chrome DevTools 集成 支持
Diagnostics Channel 🟢 已支持
DNS 🟡 部分支持
Errors 🟢 已支持
Events 🟢 已支持
File system 🟢 已支持
Globals 🟢 已支持
HTTP 🟢 已支持
HTTPS 🟢 已支持
Module 🟡 部分支持
Net 🟢 已支持
OS 🟡 部分支持
Path 🟢 已支持
Performance hooks 🟡 部分支持
Process 🟢 已支持
Punycode (deprecated) 🟢 已支持
Query strings 🟢 已支持
Stream 🟢 已支持
String decoder 🟢 已支持
Test runner 🟡 部分支持
Timers 🟢 已支持
TLS/SSL 🟡 部分支持
URL 🟢 已支持
Utilities 🟢 已支持
Web Crypto API 🟢 已支持
Web Streams API 🟢 已支持
Zlib 🟢 已支持

除非另有说明,Workers 中 Node.js API 的原生实现旨在与 Node.js 当前版本 的实现保持一致。

如果你希望使用的 API 尚未提供,并建议 Workers 支持它,请在 GitHub 的 Node.js API 讨论分类 中发帖或评论。

非功能性桩模块

部分 Node.js 模块以非功能性桩的形式提供。桩可以导入或 require,但不提供底层 Node.js API 的工作实现。这些桩的存在是为了让检查模块是否存在的包能在 Workers 中加载,但不适合在应用代码中直接使用。

以下桩仅在启用 nodejs_compat 兼容性标志且 Worker 兼容性日期为所示日期或更晚时自动启用。若要更早启用,请添加相应的 enable 标志。若要在该日期之后仍保持不可用,请添加相应的 disable 标志。

Stub 模块 在以下日期或之后启用 nodejs_compat 启用标志 禁用标志
node:http2 2025-09-01 enable_nodejs_http2_module disable_nodejs_http2_module
node:vm 2025-10-01 enable_nodejs_vm_module disable_nodejs_vm_module
node:cluster 2025-12-04 enable_nodejs_cluster_module disable_nodejs_cluster_module
node:domain 2025-12-04 enable_nodejs_domain_module disable_nodejs_domain_module
node:trace_events 2025-12-04 enable_nodejs_trace_events_module disable_nodejs_trace_events_module
node:wasi 2025-12-04 enable_nodejs_wasi_module disable_nodejs_wasi_module
node:_stream_wrap 2026-01-29 enable_nodejs_stream_wrap_module disable_nodejs_stream_wrap_module
node:dgram 2026-01-29 enable_nodejs_dgram_module disable_nodejs_dgram_module
node:inspector 2026-01-29 enable_nodejs_inspector_module disable_nodejs_inspector_module
node:sqlite 2026-01-29 enable_nodejs_sqlite_module disable_nodejs_sqlite_module
node:child_process 2026-03-17 enable_nodejs_child_process_module disable_nodejs_child_process_module
node:readline 2026-03-17 enable_nodejs_readline_module disable_nodejs_readline_module
node:repl 2026-03-17 enable_nodejs_repl_module disable_nodejs_repl_module
node:tty 2026-03-17 enable_nodejs_tty_module disable_nodejs_tty_module
node:v8 2026-03-17 enable_nodejs_v8_module disable_nodejs_v8_module
node:worker_threads 2026-03-17 enable_nodejs_worker_threads_module disable_nodejs_worker_threads_module

Node.js API Polyfill

Workers 运行时中尚未支持的 Node.js API 通过 Wrangler 进行 polyfill,Wrangler 使用 unenv。若启用了 nodejs_compat 兼容性标志,且 Worker 的兼容性日期为 2024-09-23 或更晚,Wrangler 会自动将 polyfill 注入到你的 Worker 代码中。

添加 polyfill 可最大化与现有 npm 包的兼容性,提供带有模拟方法的模块。调用这些模拟方法要么无操作,要么抛出类似以下消息的错误:

[unenv] <method name> is not implemented yet!

这允许你导入使用这些 Node.js 模块的包,即使某些方法尚未支持。

仅启用 AsyncLocalStorage

若只需启用 Node.js AsyncLocalStorage API,可启用 nodejs_als 兼容性标志:

{
	"compatibility_flags": ["nodejs_als"],
}
compatibility_flags = [ "nodejs_als" ]

这篇文档对您有帮助吗?