← Cloudflare Workers / workers / runtime-apis / nodejs
proces
process ↗ modul v Node.js poskytuje řadu užitečných API souvisejících s aktuálním procesem.
Workers zpočátku podporovaly pouze nextTick, env, exit, getBuiltinModule, platform a features na proces,
který byl poté aktualizován pomocí enable_nodejs_process_v2 příznak, abyste zahrnuli většinu funkcí Node.js process.
Viz Dokumentace Node.js pro process ↗ s dalšími informacemi.
Při přizpůsobování podpory Node.js process pro serverless prostředí platí implementační detaily specifické pro Workers, které jsou podrobněji popsány níže.
process.env
V implementaci Node.js pro process.env, env objekt je kopií proměnných prostředí v okamžiku spuštění procesu. V implementaci Workers neexistuje prostředí na úrovni procesu, takže ve výchozím nastavení env je prázdný objekt. Přesto můžete nastavovat a získávat hodnoty z env, a ty pak zůstanou globálně persistentní pro všechny Workery běžící ve stejném izolátu a kontextu (například ve stejném vstupním bodě Workers).
Když Kompatibilita s Node.js je povoleno a nodejs_compat_populate_process_env příznak kompatibility je nastaven (u dat kompatibility od 2025-04-01 včetně je ve výchozím nastavení povolen), process.env bude obsahovat veškeré proměnné prostředí,
secrets, nebo metadata verze metadata nakonfigurovaná na vašem Workeru.
Nastavení jakékoli hodnoty na process.env tuto hodnotu převede na řetězec.
Alternativa: Import env z cloudflare:workers
Místo použití process.env, můžete import env z cloudflare:workers pro přístup k proměnným prostředí a všem ostatním bindings odkudkoli ve vašem kódu.
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;
}
})();
},
};Důrazně se doporučuje, abyste nedělejte nahradí celý process.env objekt s
cloudflare env objekt. Tím přijdete o veškeré proměnné prostředí, které
byly nastaveny dříve, a způsobíte neočekávané chování u ostatních Workerů běžících
ve stejném izolátu. Konkrétně by to způsobilo nekonzistenci s process.env objekt při
přístupu prostřednictvím pojmenovaných importů.
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 implementace pro process.nextTick() je obal pro standardní Web Platform API queueMicrotask() ↗.
import { env, nextTick } from "node:process";
env["FOO"] = "bar";
console.log(env["FOO"]); // Prints: bar
nextTick(() => {
console.log("next tick");
});Stdio
process.stdout ↗, process.stderr ↗ a process.stdin ↗ jsou podporovány jako streamy. stdin se považuje za prázdný readable stream.
stdout a stderr jsou zapisovatelné streamy bez TTY, které se vypisují do běžného logovacího výstupu pouze s stdout: a stderr: prefixování.
Vyrovnávací paměť řádků funguje tak, že ukládá zápisy do stdout nebo stderr, dokud se neobjeví znak nového řádku \n je zaznamenáno, nebo do další mikroúlohy, kdy se protokol vypíše na výstup.
Tím se zajišťuje kompatibilita s inspektorem a výstupy strukturovaného logování.
Aktuální pracovní adresář
process.cwd() ↗ je aktuální pracovní adresář, používá se jako výchozí cesta pro všechny operace se souborovým systémem a je inicializována na /bundle.
process.chdir() ↗ umožňuje upravit cwd a operace souborového systému (FS) ho respektují při použití enable_nodejs_fs_module.
Hrtime
Zatímco process.hrtime ↗ časovač s vysokým rozlišením je dostupný, poskytuje jen nepřesný časovač, a to čistě kvůli kompatibilitě.