fs модуль
Тема дорожной карты · Node.js
Модуль fs (file system, файловая система) — это встроенный модуль Node.js, предоставляющий API для чтения, записи, обновления, удаления и отслеживания файлов и директорий операционной системы. Node.js предлагает три стиля API в рамках fs: функции на основе колбэков, такие как fs.readFile(), синхронные блокирующие функции, такие как fs.readFileSync(), и современный API на основе Promise, доступный через fs/promises (например, import { readFile, writeFile } from 'fs/promises'). API на основе Promise из fs/promises рекомендуется для нового серверного кода Node.js, поскольку он чисто интегрируется с async/await и не блокирует цикл событий, в отличие от синхронных вариантов *Sync, которые следует использовать только в скриптах запуска или CLI-инструментах. Модуль fs также предоставляет fs.watch() и fs.watchFile() для мониторинга изменений файлов, fs.createReadStream() и fs.createWriteStream() для потоковой передачи больших файлов, а также fs.stat() / fs.access() для проверки метаданных и прав доступа к файлам. Владение модулем fs Node.js необходимо для серверных приложений, работающих с конфигурационными файлами, пользовательскими загрузками, ротацией логов и любым файловым хранением данных.
Как это работает
fs модуль идёт с runtime — без установки. Основные: fs (файловая система, sync и promise API), path (кросс-платформенная сборка путей), http/https (серверы и клиенты), crypto (хеширование, шифры, randomBytes), os (системная информация), events (базовый EventEmitter), child_process (spawn/fork), stream (readable/writable), url, querystring, util, assert. У большинства есть callback и node:-prefixed promise-альтернатива в современных версиях.
Когда применять
Сначала core-модули, потом зависимость — они закрывают большинство задач без supply-chain риска. fs/promises покрывает 90% file I/O; crypto.randomUUID() делает uuid-библиотеки ненужными; URL (WHATWG) заменяет url.parse(). Префикс node: (require("node:fs")) для ясности в ESM. Promise API лучше callback в новом коде; legacy callback всё ещё нужен для streams.
Типичные ошибки
Ловушки fs модуль: sync fs (readFileSync) в обработчиках запросов (блокирует event loop); конкатенация строк вместо path.join (Windows-backslash); Math.random() для криптографии (нужен crypto.randomBytes); не пробрасывают AbortSignal — HTTP-клиенты текут после отмены. Прочтите Node API docs страницу за страницей — половина мыслей "не хватает библиотеки" исчезает.