Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Node.js 互換性

最終更新 Markdown で表示Agent セットアップ

Worker を書くとき、npm からパッケージを import することがあります。多くの npm パッケージは Node.js runtime の API に依存しており、これらの Node.js API がなければ動きません。

Cloudflare Workers は、Node.js API のサブセットを次の 2 つの形で提供します。

  1. Workers Runtime が提供する組み込み API として。これらの API の多くは、対応する Node.js API の完全な実装です。一部は部分的なサポートです。
  2. Wrangler が Worker のコードに追加するポリフィル(シム)実装として。モジュールの import はできますが、API メソッドを呼ぶとエラーになります。

はじめに

compatibility date が 2026-08-04 以降の場合、Workers は nodejs_compatnodejs_compat_v2 の両方を既定で有効にします。組み込みの Node.js API とポリフィルは、追加設定なしで使えます。

これらの compatibility date では、compatibility date 自体が同じ動作を有効にするため、nodejs_compatnodejs_compat_v2 は使いません。既存プロジェクトは、compatibility date を更新するときにこれらのフラグを削除する必要はありません。新規の設定では省略します。

compatibility date が 2024-09-23 から 2026-08-03 までの場合は、Wrangler 設定ファイルnodejs_compat compatibility flag を追加してオプトインします。

{
	"compatibility_date": "2026-08-03",
	"compatibility_flags": ["nodejs_compat"]
}
compatibility_date = "2026-08-03"
compatibility_flags = [ "nodejs_compat" ]

compatibility date が 2026-08-04 以降で Node.js 互換を完全にオフにするには、肯定フラグがあれば削除します。そのうえで no_nodejs_compatno_nodejs_compat_v2 の両方を追加します。設定例は Node.js compatibility flag を参照してください。

サポート対象の Node.js API

この節で「🟢 サポート済み」とある Node.js の runtime API は、現在 Workers Runtime でネイティブサポートされています。「🟡 一部サポート」の項目は使える API を含みますが、Node.js API の全体は実装していません。

非推奨または実験的な Node.js API と、サーバーレスの文脈に合わない API は、この節のサポート対象一覧に含めていません。これらの API 向けの import 専用スタブの一部は、機能しないスタブモジュール に別掲しています。

API 名 Workers Runtime でのネイティブサポート
アサーションテスト 🟢 サポート済み
非同期コンテキスト追跡 🟢 サポート済み
Buffer 🟢 サポート済み
Console 🟡 一部サポート
Crypto 🟢 サポート済み
Debugger 🟢 Chrome DevTools 連携 でサポート
Diagnostics Channel 🟢 サポート済み
DNS 🟡 一部サポート
エラー 🟢 サポート済み
Events 🟢 サポート済み
ファイルシステム 🟢 サポート済み
グローバル 🟢 サポート済み
HTTP 🟢 サポート済み
HTTPS 🟢 サポート済み
Module 🟡 一部サポート
Net 🟢 サポート済み
OS 🟡 一部サポート
Path 🟢 サポート済み
Performance hooks 🟡 一部サポート
Process 🟢 サポート済み
Punycode(非推奨) 🟢 サポート済み
クエリ文字列 🟢 サポート済み
Stream 🟢 サポート済み
String decoder 🟢 サポート済み
テストランナー 🟡 一部サポート
Timers 🟢 サポート済み
TLS/SSL 🟡 一部サポート
URL 🟢 サポート済み
ユーティリティ 🟢 サポート済み
Web Crypto API 🟢 サポート済み
Web Streams API 🟢 サポート済み
Zlib 🟢 サポート済み

特に記載がない限り、Workers における Node.js API のネイティブ実装は、Node.js の Current リリース の実装に合わせることを意図しています。

使いたい API がなく、Workers でのサポートを提案したい場合は、GitHub の Node.js APIs discussions category に投稿またはコメントしてください。

機能しないスタブモジュール

一部の Node.js モジュールは、機能しないスタブとして利用できます。スタブは import や require はできますが、元の Node.js API の実装は提供しません。モジュールの存在を確認するパッケージが Workers 上で読み込めるようにするためのもので、アプリケーションコードから直接使う用途には向きません。

次のスタブは、nodejs_compat compatibility flag が有効で、Worker の compatibility date が表の日付以降の場合にだけ、自動で有効になります。より早い日付で有効にするには、対応する enable フラグを追加します。その日付以降も無効のままにするには、対応する disable フラグを追加します。

スタブモジュール 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 のポリフィル

Workers runtime でまだサポートされていない Node.js API は、unenv を使う Wrangler によってポリフィルされます。nodejs_compat compatibility flag が有効で、Worker の compatibility date が 2024-09-23 以降の場合、Wrangler はポリフィルを Worker のコードへ自動注入します。

ポリフィルを追加すると、モックされたメソッドを持つモジュールを提供し、既存の npm パッケージとの互換性が高まります。これらのモックメソッドを呼ぶと、何もしない(noop)か、次のようなメッセージでエラーになります。

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

一部のメソッドが未サポートでも、これらの Node.js モジュールを使うパッケージを import できます。

AsyncLocalStorage だけを有効にする

Node.js の AsyncLocalStorage API だけを有効にしたい場合は、nodejs_als compatibility flag を有効にします。

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

役に立ちましたか?