跳转到内容
搜索文档

process

最后更新 查看 MarkdownAgent 设置

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,在代码任意位置访问环境变量和所有其他绑定(binding)。

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;
			}
		})();
	},
};

强烈建议不要用 cloudflare 的 env 对象替换整个 process.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 平台 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 或直到下一个 microtask,然后将日志刷新到输出。

这确保了与 inspector 和结构化日志输出的兼容性。

当前工作目录

process.cwd() 是_当前工作目录_,用作所有文件系统操作的默认路径,初始化为 /bundle

process.chdir() 允许修改 cwd,使用 enable_nodejs_fs_module 时 FS 操作会尊重此设置。

Hrtime

虽然 process.hrtime 高精度计时器可用,但它仅为兼容性提供不精确的计时。

这篇文档对您有帮助吗?