Skip to content

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

process

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

Node.js の process モジュールは、現在のプロセスに関する便利な API を提供します。

当初 Workers が process で対応していたのは nextTickenvexitgetBuiltinModuleplatformfeatures だけでした。その後、enable_nodejs_process_v2 フラグで、ほとんどの Node.js process 機能が使えるようになりました。

詳細は Node.js の process ドキュメント を参照してください。

サーバーレス環境向けに Node.js の process 対応を合わせるとき、Workers 固有の実装上の違いがあります。詳細は次のとおりです。

process.env

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 に値を設定すると、その値は文字列に変換されます。

別の方法: cloudflare:workers から 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!

process.nextTick()

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.stdoutprocess.stderrprocess.stdin はストリームとして使えます。stdin は空の読み取り可能なストリームとして扱われます。stdoutstderr は TTY ではない書き込み可能なストリームで、通常のログ出力に stdout: stderr: の接頭辞を付けて出力します。

行バッファは、stdout または stderr への書き込みを、改行文字 \n が現れるまで、または次のマイクロタスクまで保持し、そのタイミングでログを出力へフラッシュします。

これにより、インスペクターと構造化ログの出力との互換性を保ちます。

カレントワーキングディレクトリ

process.cwd() はカレントワーキングディレクトリで、すべてのファイルシステム操作のデフォルトパスとして使われ、初期値は /bundle です。

process.chdir()cwd を変更できます。enable_nodejs_fs_module を使う場合、FS 操作はこの値を尊重します。

Hrtime

process.hrtime の高分解能タイマーは使えますが、互換性のための不正確なタイマーです。

役に立ちましたか?