Expo не является внутренней или внешней командой: как исправить ошибку

Ошибка "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, и глобальная установка вам в принципе не обязательна.

📊 Какой способ решения помог вам?
Запуск через npx expo
Переустановка Node.js
Исправление переменной 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

Выполнено: 0 / 5

Особенности 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Политика ExecutionPolicySet-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 и установите зависимости заново.