Ошибка "expo" не является внутренней или внешней командой, исполняемой программой или пакетным файлом появляется в командной строке Windows, когда система не находит исполняемый файл Expo CLI — либо инструмент не установлен, либо путь к нему отсутствует в переменной окружения PATH. Чаще всего проблема возникает сразу после установки Node.js, при первом запуске проекта React Native или после обновления пакетов через npm.
Хорошая новость: ошибка почти всегда решается без переустановки системы. Достаточно проверить несколько типовых причин — от банально не перезапущенного терминала до конфликта глобальной и локальной установки. Ниже разберём диагностику по шагам, начиная с самых простых проверок.
Почему Windows не находит команду expo
Когда вы вводите команду в cmd или PowerShell, Windows ищет исполняемый файл в текущей папке, а затем во всех каталогах, перечисленных в переменной PATH. Если ни в одном из них файла expo.cmd или expo нет — вы получаете именно это сообщение об ошибке.
Типовые причины выглядят так:
- 🔧 Expo CLI не установлен глобально, а вы пытаетесь вызвать его как системную команду;
- 📁 папка глобальных пакетов npm не добавлена в PATH или добавлена некорректно;
- 🔄 терминал открыт до установки пакета и «не видит» обновлённое окружение;
- 📦 в новых версиях Expo используется локальный CLI внутри проекта, а глобальный пакет
expo-cliсчитается устаревшим; - 🚫 антивирус или политики Windows заблокировали выполнение скриптов (актуально для PowerShell).
Отдельно стоит сказать про nvm или другие менеджеры версий Node.js: при переключении версии Node глобальные пакеты «остаются» в старой версии, и команда пропадает. Если вы недавно меняли версию Node — начните проверку именно с этого.
Шаг 1. Проверьте, установлен ли Node.js и npm
Expo CLI — это пакет экосистемы Node.js, поэтому без корректно установленного Node ничего работать не будет. Откройте новое окно командной строки и выполните две проверки:
node -v
npm -v
Обе команды должны вывести номера версий. Если вместо этого вы видите ту же ошибку «не является внутренней или внешней командой» — проблема глубже: Node.js либо не установлен, либо его путь тоже отсутствует в PATH. В этом случае скачайте актуальный установщик с официального сайта nodejs.org и при установке оставьте включённой опцию добавления в PATH (она отмечена по умолчанию).
⚠️ Внимание: после установки или переустановки Node.js обязательно закройте все окна терминала и откройте новое. Переменные окружения подхватываются только при запуске нового процесса — в уже открытой консоли старые значения PATH сохранятся.
Шаг 2. Проверьте глобальную установку и PATH
Если Node работает, проверьте, видит ли npm сам себя и куда он ставит глобальные пакеты. Выполните:
npm config get prefix
npm list -g --depth=0
Первая команда покажет каталог глобальной установки (обычно что-то вроде C:\Users\Имя\AppData\Roaming\npm), вторая — список глобально установленных пакетов. Если expo-cli в списке есть, а команда не работает — дело именно в PATH.
Чтобы добавить путь вручную:
- ⚙️ откройте
Параметры → Система → О системе → Дополнительные параметры системы; - 📝 нажмите Переменные среды и найдите
Pathв разделе пользовательских переменных; - ➕ добавьте путь, который выдала команда
npm config get prefix; - ✅ сохраните изменения и откройте новый терминал для проверки.
Шаг 3. Современный способ: запуск через npx
Команда Expo официально рекомендует не устанавливать глобальный expo-cli, а использовать локальный CLI, который входит в пакет expo внутри каждого проекта. Это устраняет целый класс проблем с PATH. Запуск выглядит так:
npx expo start
Команда npx сначала ищет пакет в node_modules текущего проекта, а если не находит — предлагает временно скачать его. То есть даже без глобальной установки вы можете работать. Для создания нового проекта используйте:
npx create-expo-app мой-проект
cd мой-проект
npx expo start
Если npx expo start работает, а просто expo start — нет, это подтверждает: проблема не в самом инструменте, а в конфигурации PATH, и глобальная установка вам в принципе не обязательна.
Шаг 4. Переустановка Expo CLI при повреждённых пакетах
Иногда пакет установлен, но его файлы повреждены — например, после прерванной установки или конфликта версий. Тогда помогает чистая переустановка. Если вы всё же хотите глобальный CLI (для старых проектов):
npm uninstall -g expo-cli
npm cache verify
npm install -g expo-cli
Для проектного варианта достаточно удалить папку node_modules и файл package-lock.json в корне проекта, затем выполнить npm install. После этого локальный npx expo будет переустановлен с нуля.
☑️ Чек-лист диагностики ошибки expo
Особенности PowerShell: политика выполнения скриптов
В PowerShell ошибка может выглядеть иначе: вместо «не является командой» вы получите сообщение о запрете выполнения скриптов. Это связано с политикой ExecutionPolicy, которая блокирует файлы .ps1, в том числе обёртки npm-пакетов.
Проверить текущую политику можно командой Get-ExecutionPolicy. Если стоит Restricted, разрешите скрипты для текущего пользователя:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
⚠️ Внимание: не устанавливайте политикуUnrestrictedглобально — это снижает защиту системы от вредоносных скриптов. УровняRemoteSignedдля текущего пользователя достаточно для работы инструментов разработки.
Альтернатива без изменения политик — использовать классический cmd или Windows Terminal с профилем командной строки, где файлы .cmd выполняются без ограничений.
Сводная таблица причин и решений
| Симптом | Вероятная причина | Решение |
|---|---|---|
| node -v тоже не работает | Node.js не установлен или нет в PATH | Установить Node.js, перезапустить терминал |
| npm работает, expo — нет | CLI не установлен или нет в PATH | Использовать npx expo или добавить путь в PATH |
| Работало, перестало после смены Node | Глобальные пакеты привязаны к версии nvm | Переустановить пакет под текущей версией |
| Ошибка только в PowerShell | Политика ExecutionPolicy | Set-ExecutionPolicy RemoteSigned |
| expo в списке npm -g есть, но не запускается | Повреждённые файлы пакета | Переустановка с очисткой кеша |
Почему глобальный expo-cli считается устаревшим
Начиная с SDK 46, команда Expo перевела CLI внутрь пакета expo каждого проекта. Это гарантирует, что версия инструмента совпадает с версией SDK проекта, и исключает конфликты между проектами. Глобальный expo-cli продолжает работать для старых проектов, но для новых рекомендуется npx expo.
Частые вопросы
Нужно ли устанавливать expo-cli глобально в 2026 году и позже?
Нет, для новых проектов это не требуется. Локальный CLI вызывается через npx expo и автоматически соответствует версии SDK вашего проекта. Глобальная установка нужна только для поддержки старых проектов.
Почему команда работает в одном терминале, но не работает в другом?
Разные терминалы (cmd, PowerShell, терминал VS Code) могут запускаться с разными наборами переменных окружения, особенно если VS Code был открыт до установки Node.js. Полностью закройте и перезапустите редактор и все консоли.
Что делать, если npx тоже выдаёт ошибку?
Значит, проблема на уровне самого Node.js или npm. Проверьте node -v и npm -v, при ошибке переустановите Node.js с официального сайта, не снимая галочку добавления в PATH.
Может ли антивирус блокировать expo?
Да, некоторые антивирусы блокируют выполнение скриптов из пользовательских каталогов. Проверьте журнал защиты и при подтверждённой блокировке добавьте папку глобальных пакетов npm в исключения — но только если вы уверены в источнике установленных пакетов.
Ошибка появляется только внутри конкретного проекта. В чём дело?
Возможная причина — повреждённый node_modules или отсутствие зависимостей. Выполните в папке проекта npm install, а при неудаче удалите node_modules и package-lock.json и установите зависимости заново.