# В Node.js появился экспериментальный модуль виртуальной файловой системы

> Источник: 404 Media. Канонический URL: https://404-media.ru/tehnologii/v-node-js-poyavilsya-eksperimentalnyy-modul-virtualnoy-faylovoy-sistemy

Node.js получил node:vfs для работы с виртуальными файлами, каталогами и архивами без размещения данных на физическом диске.

- Рубрика: Технологии (https://404-media.ru/tehnologii)
- Опубликовано: 2026-10-15T13:44:31+03:00
- HTML: https://404-media.ru/tehnologii/v-node-js-poyavilsya-eksperimentalnyy-modul-virtualnoy-faylovoy-sistemy
- Markdown: https://404-media.ru/tehnologii/v-node-js-poyavilsya-eksperimentalnyy-modul-virtualnoy-faylovoy-sistemy.md
- llms.txt: https://404-media.ru/llms.txt

![В Node.js появился экспериментальный модуль виртуальной файловой системы](https://storage.yandexcloud.net/404-media/media/2026/10/iYPvhEi1mXEajmQ3ngLfDDGT2vzQjzxpUGzcronl.png)

В среде выполнения Node.js появился экспериментальный модуль **node:vfs**. Он позволяет организовывать файлы и каталоги в виртуальном пространстве, не размещая их напрямую на физическом диске. Первая версия функциональности вошла в Node.js 26.4.0, а в последующих выпусках модуль получил интеграцию с загрузчиком и поддержку архивов.

![В Node.js появился экспериментальный модуль виртуальной файловой системы](https://storage.yandexcloud.net/404-media/media/2026/10/nwKpXMSe7I23jQQSi9ZKbgF77KQZuxiaCCHmUS5M.png)

![В Node.js появился экспериментальный модуль виртуальной файловой системы](https://storage.yandexcloud.net/404-media/media/2026/10/UdwuBYKE6VLK3W99URtIfSdM84H8g1yCv9kYdmrd.gif)

![В Node.js появился экспериментальный модуль виртуальной файловой системы](https://storage.yandexcloud.net/404-media/media/2026/10/jbWqSFPvA7Rr0uq6uHk2LGSC3zNO6S7xXfsg8JLw.png)

‹›

Фото: Хабр

Для включения виртуальной файловой системы требуется запустить Node.js с флагом **--experimental-vfs**. Модуль объединяет провайдер хранения данных с интерфейсом, близким к стандартному **node:fs**. Вызов **mount()** создает изолированное пространство имен, а путь точки монтирования выбирается самой средой выполнения. В POSIX-системах используется путь вроде **/dev/null/vfs/0**, в Windows — пространство имен, связанное с null-устройством.

Путь внутри смонтированной системы принадлежит только этому виртуальному дереву. Если файл там не найден, Node.js не продолжает поиск на физическом диске. Это позволяет направлять операции чтения и загрузки модулей в заранее выбранное хранилище, сохраняя стандартные правила разрешения пакетов, включая поиск **package.json**. Точка монтирования одновременно выступает границей разрешения модулей.

## Провайдеры и работа с кэшем

В состав Node.js вошли несколько публичных провайдеров. **MemoryProvider** хранит структуру в оперативной памяти, **RealFSProvider** отображает существующие директории, а **ZipProvider** предназначен для работы с ZIP-архивами. Для одиночных исполняемых файлов используется внутренний провайдер SEA. Специализированные варианты, например **SqliteProvider**, в ядро Node.js не включены.

При размонтировании виртуального дерева Node.js удаляет связанные с ним записи из кэша загрузчика. Очистка затрагивает модули CommonJS, кэш загрузки ESM и метаданные пакетов. Это позволяет повторно монтировать хранилища без сохранения старых результатов разрешения модулей.

## Нативные аддоны и одиночные приложения

Выпуск Node.js 26.9.0 добавил загрузку нативных аддонов с расширением **.node** из виртуальной файловой системы. Чтобы передать бинарные данные системному динамическому загрузчику, на Linux Node.js создает анонимный файловый дескриптор в памяти, а на других операционных системах использует временный файл.

В Node.js 26.10.0 появилась поддержка загрузки разделяемых библиотек через **node:ffi**. Для одиночных исполняемых приложений добавили параметр **"useVfs": true**. Он монтирует упакованные ресурсы в режиме только для чтения и запускает главный скрипт из виртуального дерева.

В том же релизе появились флаги командной строки **--vfs-load** и **--vfs-mount**. Первый монтирует виртуальную систему и запускает указанную точку входа, второй выполняет монтирование без выбора точки входа. Функция **registerProvider** позволяет зарегистрировать пользовательские форматы упаковки до создания стартовых монтирований.

## Ограничения и совместимость

Виртуальная файловая система не предназначена для изоляции или контроля доступа. Она не блокирует запуск процессов и не мешает коду обращаться к реальным путям на диске. При включенной модели разрешений Node.js для монтирования требуется флаг **--allow-fs-vfs**, а для использования FFI — **--allow-ffi**.

Сторонняя библиотека **@platformatic/vfs** обновилась до версии 0.5.0 и получила поддержку нового API монтирования для Node.js 22 и более поздних версий. При этом пользовательские реализации не предоставляют встроенную поддержку ZIP-провайдера, интеграцию с SEA и загрузку нативных аддонов.
