#Что означает сообщение
ERR_REQUIRE_ESM
ERR_REQUIRE_ESM возникает, когда CommonJS пытается через require загрузить модуль, который поставляется только в формате ES Modules. Смешение двух систем импорта — причина на уровне проекта.
#Как отличить причины
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| ESM-пакет | Зависимость публикует только ES-модуль. | Проверьте exports/type и используйте import. |
| CJS-код | Код CommonJS пытается загрузить ESM через require. | Примените совместимый import() либо миграцию файла. |
| Версия пакета | Версия пакета сменила формат экспорта. | Подберите официально совместимую версию с lock-файлом. |
| Конфиг | Конфигурация проекта смешивает типы модулей. | Сверьте package.json type и расширения .cjs/.mjs. |
#Пошаговое решение
- Проверьте тип модулейОткройте текст ошибки
ERR_REQUIRE_ESMи название пакета. Вpackage.jsonпроекта посмотрите полеtype, а у зависимости —exports/typeв её package.json. Ошибка означает попытку загрузить ES-модуль через CommonJSrequire()в несовместимой комбинации версий. - Для ES-модуля используйте импортЕсли файл проекта работает как ESM (
.mjsлибо"type": "module"), заменитеconst pkg = require("pkg")наimport pkg from "pkg"согласно экспорту пакета. Имя импорта зависит от библиотеки; проверьте её документацию. Не переводите весь проект в ESM одной правкой без проверки другихrequireи__dirname. - Для CommonJS используйте совместимый вариантВ
.cjsили пакете безtype: moduleпри необходимости используйте асинхронныйconst mod = await import("pkg")внутриasync-функции. Если проект не допускает изменения, выберите официально поддерживаемую версию зависимости, совместимую с вашим Node.js, закрепив её в lock-файле. Не устанавливайте случайную старую версию ради ошибки. - Проверьте сборку и запускВ терминале выполните
node --version, затем команду запуска изpackage.json. Если импорт разрешён и приложение работает, ошибка исправлена. ПриERR_PACKAGE_PATH_NOT_EXPORTEDотдельно проверьте публичные пути экспорта пакета; это другой случай.
#Что важно перед исправлением
Не заменяйте бездумно все require в проекте и не понижайте версии пакетов без проверки совместимости и фиксации изменений lock-файла.