INTEGRITY Dokumentace

fs

Můžete použít node:fs pro přístup k virtuálnímu souborovému systému ve Workers.

node:fs modul je dostupný v runtime prostředích Workers, která podporují kompatibilitu s Node.js pomocí nodejs_compat příznak kompatibility. Jakýkoli Worker spuštěný s nodejs_compat zapnuto a s datem kompatibility 2025-09-01 nebo novější budou mít přístup k node:fs ve výchozím nastavení. Je také možné zapnout node:fs na Workers se starším datem kompatibility pomocí kombinace nodejs_compat a enable_nodejs_fs_module příznaky. Chcete-li vypnout node:fs můžete nastavit disable_nodejs_fs_module příznak.

import { readFileSync, writeFileSync } from "node:fs";

const config = readFileSync("/bundle/config.txt", "utf8");

writeFileSync("/tmp/abc.txt", "Hello, world!");

Workers Virtual File System (VFS) je paměťový souborový systém, který vám umožňuje číst moduly zahrnuté ve vašem Worker bundlu jako soubory pouze pro čtení, přistupovat k adresáři pro zápis dočasných souborů nebo přistupovat ke společným znaková zařízení jako /dev/null, /dev/random, /dev/full, a /dev/zero.

Struktura adresáře na začátku vypadá takto:


/bundle
└── (one file for each module in your Worker bundle)
/tmp
└── (empty, but you can write files, create directories, symlinks, etc)
/dev
├── null
├── random
├── full
└── zero

/bundle adresář obsahuje soubory všech modulů zahrnutých ve vašem balíčku Workeru, které můžete číst pomocí API jako readFileSync nebo read(...), atd. Ty jsou vždy jen pro čtení. Čtení z balíčku se hodí, když potřebujete načíst konfigurační soubor nebo šablonu.

import { readFileSync } from "node:fs";

// The config.txt file would be included in your Worker bundle.
// Refer to the Wrangler documentation for details on how to
// include additional files.
const config = readFileSync("/bundle/config.txt", "utf8");

export default {
	async fetch(request) {
		return new Response(`Config contents: ${config}`);
	},
};

/tmp adresář je zapisovatelný a můžete jej použít k vytváření dočasných souborů nebo adresářů. V tomto adresáři můžete také vytvářet symlinky. Obsah /tmp nejsou trvalé a jsou jedinečné pro každý požadavek. To znamená, že soubory vytvořené ve /tmp v kontextu jednoho požadavku nebude dostupná v jiných souběžných nebo následných požadavcích.

import { writeFileSync, readFileSync } from "node:fs";

export default {
	fetch(request) {
		// The file `/tmp/hello.txt` will only exist for the duration
		// of this request.
		writeFileSync("/tmp/hello.txt", "Hello, world!");
		const contents = readFileSync("/tmp/hello.txt", "utf8");
		return new Response(`File contents: ${contents}`);
	},
};

/dev adresář obsahuje běžná znaková zařízení:

Všechny operace nad VFS jsou synchronní. Můžete použít synchronní, asynchronní callback nebo API založené na promise, které poskytuje node:fs modul, ale všechny operace budou probíhat synchronně.

Časová razítka souborů ve VFS jsou v současnosti vždy nastavena na unixovou epochu (1970-01-01T00:00:00Z). To znamená, že operace, které se spoléhají na časová razítka, jako fs.stat, vždy vrátí stejné časové razítko pro všechny soubory ve VFS. Jde o dočasné omezení, které bude řešeno v některé z budoucích verzí.

Protože jsou všechny dočasné soubory uchovávány v paměti, celková velikost všech vytvořených dočasných souborů a adresářů se započítává do paměťového limitu Workeru. Pokud tento limit překročíte, instance Workeru bude ukončena a restartována.

Implementace souborového systému má následující omezení:

Následující node:fs API nejsou ve Workers podporována, nebo jsou podporována pouze částečně:

Kompletní node:fs API je zdokumentováno v Dokumentace Node.js pro node:fs.