Ошибка "pkg" не является внутренней или внешней командой, исполняемой программой или пакетным файлом появляется в командной строке Windows в тот момент, когда система не находит исполняемый файл pkg ни в текущей папке, ни в каталогах, прописанных в переменной окружения PATH. Чаще всего с этим сталкиваются разработчики, которые пытаются запустить пакет pkg для Node.js (инструмент упаковки Node-приложений в exe-файл), не установив его глобально или не настроив окружение.
Сообщение выглядит пугающе, но причина почти всегда одна из трёх: утилита не установлена, установлена локально, а запускается как глобальная, или путь к ней отсутствует в PATH. Ниже разберём, как определить конкретный сценарий и устранить проблему без переустановки всей системы.
Что означает это сообщение об ошибке
Командная строка Windows (cmd.exe или PowerShell) ищет введённую команду в строго определённом порядке: сначала в текущем каталоге, затем во всех папках, перечисленных в переменной PATH. Если файл pkg.exe, pkg.cmd или pkg.bat нигде не найден, система выдаёт именно эту ошибку.
Важно понимать: ошибка не означает, что «pkg сломан». Она означает, что Windows не знает, где он находится. Это может быть следствием отсутствия Node.js, отсутствия самого пакета или устаревшего сеанса терминала, который не подхватил обновлённые переменные окружения.
Проверка: установлен ли Node.js
Пакет pkg распространяется через npm — менеджер пакетов Node.js. Если сама платформа не установлена, npm-команды работать не будут, и pkg запустить не получится. Проверьте наличие Node.js командой:
node -v
npm -v
Если обе команды возвращают версии (например, v20.x.x), платформа установлена. Если появляется та же ошибка «не является командой», Node.js отсутствует или его путь не прописан. В этом случае скачайте установщик с официального сайта nodejs.org и при установке оставьте включённой опцию добавления в PATH — она активна по умолчанию.
Установка пакета pkg через npm
Самая частая причина ошибки — пакет просто не установлен. Для глобальной установки, после которой команда pkg станет доступна из любой папки, выполните:
npm install -g pkg
Проверить, установлен ли пакет глобально, можно командой npm list -g pkg. Если в выводе пусто — глобальной установки нет. Если пакет ставился локально в конкретный проект (без флага -g), запускать его нужно через npx pkg из папки проекта, где находится node_modules.
- 🔧
npm install -g pkg— глобальная установка, команда доступна везде - 📁
npm install pkg— локальная установка только в текущий проект - ▶️
npx pkg app.js— запуск локально установленного пакета без глобальной установки - 🔍
npm list -g --depth=0— просмотр всех глобально установленных пакетов
☑️ Порядок действий при ошибке pkg
Проверка и настройка переменной PATH
Если пакет установлен глобально, но ошибка сохраняется, проблема в переменной PATH. Глобальные npm-пакеты на Windows обычно размещаются в папке вида C:\Users\Имя\AppData\Roaming\npm. Узнать точный путь можно командой:
npm config get prefix
Сравните результат с содержимым PATH. Откройте Параметры → Система → О системе → Дополнительные параметры системы → Переменные среды и проверьте, есть ли этот путь в пользовательской переменной Path. Если его нет — добавьте вручную через кнопку «Создать», затем перезапустите терминал.
⚠️ Внимание: редактируйте переменные среды аккуратно и не удаляйте существующие пути — это может нарушить работу других программ. Добавляйте новый путь отдельной строкой, не стирая прежние значения.
Типичные причины и их признаки
Чтобы быстрее определить свой сценарий, сверьтесь с таблицей симптомов и решений:
| Причина | Как распознать | Решение |
|---|---|---|
| pkg не установлен | npm list -g pkg ничего не показывает | npm install -g pkg |
| Установлен локально | pkg есть в node_modules проекта | Запуск через npx pkg |
| Нет пути в PATH | npm config get prefix не входит в Path | Добавить путь в переменные среды |
| Устаревший сеанс терминала | Ошибка после свежей установки | Перезапустить cmd или ПК |
| Node.js не установлен | node -v тоже выдаёт ошибку | Установить Node.js с официального сайта |
Отдельный случай — запуск из терминала VS Code. Интегрированный терминал наследует переменные окружения на момент запуска редактора, поэтому после установки Node.js или pkg редактор тоже нужно полностью перезапустить.
⚠️ Внимание: если вы используете несколько версий Node.js через менеджер версий (например, nvm-windows), глобальные пакеты привязаны к конкретной версии. После переключения версии pkg может «пропасть» — установите его заново для активной версии.
Альтернативы пакету pkg
Разработка пакета pkg приостановлена его авторами. В современных версиях Node.js доступен встроенный механизм SEA (Single Executable Applications), а также существуют сторонние инструменты упаковки. Если pkg не подходит, изучите официальную документацию Node.js по созданию одиночных исполняемых файлов.
Запуск pkg и проверка результата
После устранения ошибки проверьте работоспособность команды: pkg --help должен вывести справку по параметрам. Для упаковки приложения укажите входной файл:
pkg app.js
По умолчанию утилита собирает бинарники под несколько платформ; ограничить сборку можно флагом --targets, например pkg app.js --targets node18-win-x64. Точный перечень поддерживаемых целей зависит от версии пакета — сверяйтесь с выводом pkg --help и документацией репозитория.
Если команда запускается, но сборка завершается ошибкой уже внутри pkg — это другая категория проблем (несовместимость версии Node.js, динамические require, нативные модули). Такие ошибки сопровождаются собственным текстом, и диагностировать их нужно по конкретному сообщению.
Часто задаваемые вопросы
Почему pkg работал вчера, а сегодня выдаёт ошибку?
Вероятные причины: переключение версии Node.js через менеджер версий, обновление Windows, сбросившее переменные среды, или удаление папки npm. Проверьте npm list -g pkg и содержимое PATH.
Можно ли запускать pkg без глобальной установки?
Да. Установите пакет локально в проект (npm install pkg) и запускайте через npx pkg app.js из папки проекта. Утилита npx входит в состав современных версий npm.
Ошибка появляется в PowerShell, но в cmd всё работает. Почему?
Возможно, политика выполнения скриптов PowerShell блокирует запуск pkg.ps1. Проверьте политику командой Get-ExecutionPolicy и при необходимости разрешите выполнение для текущего пользователя: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser.
Поможет ли переустановка Windows?
Нет необходимости в столь радикальной мере. Ошибка решается установкой пакета и настройкой PATH — это занимает несколько минут и не требует каких-либо системных изменений.
Чем заменить pkg, если он не подходит?
Начиная с современных версий Node.js доступен встроенный механизм создания одиночных исполняемых файлов (SEA). Также существуют сторонние упаковщики. Выбор зависит от версии Node.js и требований проекта — ориентируйтесь на официальную документацию.