path модуль
Тема дорожной карты · Node.js
Модуль path — это встроенный модуль Node.js, предоставляющий утилиты для работы с путями к файлам и директориям кроссплатформенным образом, абстрагируя различия между разделителями путей POSIX (/) и Windows (\). Ключевые API модуля path включают path.join() для безопасного объединения сегментов пути, path.resolve() для вычисления абсолютных путей из относительных, path.dirname() и path.basename() для извлечения компонентов директории и имени файла, а также path.extname() для чтения расширений файлов. В серверной разработке Node.js паттерн path.join(__dirname, 'config.json') часто используется для надёжного определения местоположения файлов относительно текущего модуля, тогда как path.resolve(process.cwd(), 'dist') применяется для вычисления директорий вывода сборки в скриптах инструментов. TypeScript-проекты извлекают пользу из использования модуля path, поскольку псевдонимы paths в tsconfig.json — это исключительно возможность TypeScript на этапе компиляции, отличная от модуля path во время выполнения; их нужно разрешать с помощью tsconfig-paths или устранять в ходе шага сборки. Модуль path не имеет зависимостей, нулевых накладных расходов и является неотъемлемой частью написания переносимых приложений Node.js.
Как это работает
path модуль идёт с 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.
Типичные ошибки
Ловушки path модуль: sync fs (readFileSync) в обработчиках запросов (блокирует event loop); конкатенация строк вместо path.join (Windows-backslash); Math.random() для криптографии (нужен crypto.randomBytes); не пробрасывают AbortSignal — HTTP-клиенты текут после отмены. Прочтите Node API docs страницу за страницей — половина мыслей "не хватает библиотеки" исчезает.