Node.js の process ↗ モジュールは、現在のプロセスに関する便利な API を提供します。
当初 Workers が process で対応していたのは nextTick、env、exit、getBuiltinModule、platform、features だけでした。その後、enable_nodejs_process_v2 フラグで、ほとんどの Node.js process 機能が使えるようになりました。
詳細は Node.js の process ドキュメント ↗ を参照してください。
サーバーレス環境向けに Node.js の process 対応を合わせるとき、Workers 固有の実装上の違いがあります。詳細は次のとおりです。
Node.js の process.env では、env オブジェクトはプロセス起動時点の環境変数のコピーです。Workers の実装にはプロセス単位の環境がないため、デフォルトの env は空のオブジェクトです。それでも env への設定と取得はでき、同じ isolate とコンテキスト(同じ Workers エントリポイントなど)で動くすべての Worker に対してグローバルに保持されます。
Node.js 互換 が有効で、nodejs_compat_populate_process_env 互換フラグが設定されている場合(互換日付が 2025-04-01 以降ではデフォルトで有効)、process.env には Worker に設定した 環境変数、シークレット、バージョンメタデータ が含まれます。
process.env に値を設定すると、その値は文字列に変換されます。
process.env の代わりに、cloudflare:workers から env をインポート して、コードのどこからでも環境変数とその他すべてのバインディングにアクセスできます。
import * as process from "node:process";
export default {
fetch(req, env) {
// Set process.env.FOO to the value of env.FOO if process.env.FOO is not already set
// and env.FOO is a string.
process.env.FOO ??= (() => {
if (typeof env.FOO === "string") {
return env.FOO;
}
})();
},
};process.env オブジェクト全体を Cloudflare の env オブジェクトで置き換えないことを強くおすすめします。置き換えると、以前設定した環境変数が失われ、同じ isolate で動くほかの Worker で予期しない動作が起きます。とくに、名前付きインポート経由でアクセスした process.env オブジェクトと不整合になります。
import * as process from "node:process";
import { env } from "node:process";
process.env === env; // true! they are the same object
process.env = {}; // replace the object! Do not do this!
process.env === env; // false! they are no longer the same object
// From this point forward, any changes to process.env will not be reflected in env,
// and vice versa!Workers の process.nextTick() は、標準の Web Platform API queueMicrotask() ↗ のラッパーです。
import { env, nextTick } from "node:process";
env["FOO"] = "bar";
console.log(env["FOO"]); // Prints: bar
nextTick(() => {
console.log("next tick");
});process.stdout ↗、process.stderr ↗、process.stdin ↗ はストリームとして使えます。stdin は空の読み取り可能なストリームとして扱われます。stdout と stderr は TTY ではない書き込み可能なストリームで、通常のログ出力に stdout: と stderr: の接頭辞を付けて出力します。
行バッファは、stdout または stderr への書き込みを、改行文字 \n が現れるまで、または次のマイクロタスクまで保持し、そのタイミングでログを出力へフラッシュします。
これにより、インスペクターと構造化ログの出力との互換性を保ちます。
process.cwd() ↗ はカレントワーキングディレクトリで、すべてのファイルシステム操作のデフォルトパスとして使われ、初期値は /bundle です。
process.chdir() ↗ で cwd を変更できます。enable_nodejs_fs_module を使う場合、FS 操作はこの値を尊重します。
process.hrtime ↗ の高分解能タイマーは使えますが、互換性のための不正確なタイマーです。