Краткий ответ
Ошибка Module not found означает, что программа не может найти модуль или пакет, который пытается загрузить. Самые частые причины: неправильное имя или путь, модуль не установлен, неверная рабочая директория или несоответствующее окружение. Решение: проверить импорт, установить пакет и запустить проект из правильной папки.
Как проявляется проблема
- Сообщение `ModuleNotFoundError: No module named 'x'` в Python
- Сообщение `Error: Cannot find module 'x'` в Node.js
- Приложение падает сразу после запуска
- Ошибка возникает только на другой машине или в окружении CI
- Импорт работает в редакторе, но не из терминала
Частые причины
Модуль не установлен
Пакет, который запрашивает код, отсутствует в окружении. Это часто происходит, когда `npm install` или `pip install` не запускается после загрузки проекта.
Неправильное имя или путь
В импорте есть опечатка, неверный относительный путь или отсутствует `__init__.py` в пакете Python. Node.js ищет точное имя модуля в `node_modules`.
Неверная рабочая директория
Команда выполняется из папки, которая не является корнем проекта, поэтому `node_modules` или виртуальное окружение не видны. Проверьте, в какой папке вы находитесь перед запуском.
Несоответствующее окружение
Вы используете глобальный Python вместо виртуального окружения или другую версию Node.js, отличную от той, которую ожидает проект. Зависимости тогда не видны.
Проблемы с кешем или установкой
Частично установленный пакет, повреждённый `node_modules` или устаревший `package-lock.json` могут привести к тому, что модуль существует, но недоступен.
Пошаговое решение
- 1
Прочитайте точное имя модуля из ошибки
Сообщение в терминале указывает имя отсутствующего модуля. Запишите его и сравните со строкой импорта в коде. В Node.js ошибка обычно начинается с
Error: Cannot find module, а в Python сModuleNotFoundError. - 2
Проверьте, что вы в корне проекта
Выполните
pwd(macOS/Linux),cdв командной строке Windows илиGet-Locationв PowerShell, чтобы увидеть текущую папку. В ней должны бытьpackage.jsonдля Node.js илиrequirements.txt/pyproject.tomlдля Python. Если их нет, перейдите в правильную папку командойcd путь/к/проекту. - 3
Установите зависимости
Для Node.js выполните
npm installв корне проекта. Для Python активируйте виртуальное окружение и выполнитеpip install -r requirements.txt. Если модуль всё ещё отсутствует, установите его отдельно:npm install имя-пакетаилиpip install имя-пакета. - 4
Проверьте импорт и путь
Убедитесь, что импорт соответствует реальному имени пакета и структуре папок. В Python относительные импорты зависят от того, откуда запускается модуль; в Node.js проверьте, начинается ли путь с
./для локальных файлов. Обращайте внимание на регистр букв. - 5
Очистите кеш и переустановите
Если модуль существует, но не виден, перед удалением сделайте резервную копию проекта или проверьте, что он сохранён в Git-репозитории. Затем удалите
node_modulesиpackage-lock.jsonи снова выполнитеnpm install; удалениеpackage-lock.jsonможет изменить версии зависимостей. В Python удалите папки__pycache__и переустановите пакет. Процедура может занять время. - 6
Проверьте версию языка и окружение
Выполните
node -vилиpython --versionи сравните с требованиями проекта. В Python проверьте, активировано ли виртуальное окружение (в приглашении отображается его имя). В Node.js используйтеnvm, если нужно переключить версию. - 7
Протестируйте изолированно
Создайте минимальный скрипт, который только импортирует модуль, и запустите его. Если он тоже падает, проблема в установке или окружении, а не в остальном коде. Если работает, ошибка в пути или способе запуска основного приложения.
Когда ничего не помогает
Если вы прошли все шаги, а ошибка остаётся, проверьте, использует ли проект настройки монорепозитория или рабочей области, где пакеты находятся в другой папке. Посмотрите также, не является ли это глобальной установкой, которая маскирует отсутствие локальной. В Node.js выполните npm ls имя-пакета, чтобы увидеть, присутствует ли пакет вообще в дереве зависимостей. В Python pip show имя-пакета даёт расположение установки. Если ошибка возникает только в системе CI, сравните версии языка и шаги установки с локальным окружением. В качестве последней опции создайте новое виртуальное окружение или свежий клон проекта и повторите установку.
Как избежать повторения
- Всегда выполняйте `npm install` или `pip install -r requirements.txt` после загрузки проекта
- Зафиксируйте версии зависимостей (`package-lock.json`, `requirements.txt`) и храните их в репозитории
- Используйте виртуальное окружение для Python и `nvm` для Node.js
- Проверяйте, что вы в корне проекта, перед выполнением команд
Когда лучше обратиться к специалисту
Если ошибка происходит из-за сложной системы сборки, монорепозитория или конфигурации CI, или повторяется, несмотря на все шаги, обратитесь в IT-поддержку, чтобы вместе проверить окружение и зависимости.
Разработка ПО и продуктов · Приложения на заказ, SaaS и MVP за 4-8 недельЧастые вопросы
Почему возникает ошибка Module not found, если пакет установлен?
Чаще всего потому, что команда использует другое окружение, отличное от того, в которое установлен пакет. Проверьте, активно ли виртуальное окружение или находитесь ли вы в правильной папке проекта.
Безопасно ли удалять node_modules и package-lock.json?
Обычно да, но сначала сделайте резервную копию проекта или проверьте, что он сохранён в Git-репозитории. Удаление `package-lock.json` может изменить версии зависимостей; после удаления снова выполните `npm install`, чтобы зависимости установились из `package.json`.
Как узнать, какой модуль отсутствует, если ошибка неясна?
Запустите приложение из терминала и прочитайте последнюю строку ошибки; там обычно указано имя модуля. В Python можно выполнить `python -v` для более подробного вывода импорта.