Программирование

Почему npm install prisma падает и не скачивает?

npm install prisma не работает: причины (ECONNRESET, ETIMEDOUT, Node версия, сеть, WSL/PowerShell). Диагностика, зеркало PRISMA_ENGINES_MIRROR, очистка кэша, фиксы для monorepo. Пошаговое решение ошибок установки Prisma.

Почему npm install падает и не скачивает пакет prisma? Я пробовал запускать npm install в WSL и в PowerShell, с бесплатным VPN и с собственным — ошибка одна и та же. Какие возможные причины и как диагностировать и устранить эту проблему?

npm install prisma часто падает из-за сетевых блокировок при скачивании бинарных engines (ECONNRESET или ETIMEDOUT), несовместимой версии Node.js или проблем с preinstall-скриптом. В WSL и PowerShell это усугубляется правами доступа, прокси или конфликтами в node_modules, даже с VPN. Быстро проверьте версию Node (node -v), очистите кэш (npm cache clean --force) и попробуйте зеркало: setx PRISMA_ENGINES_MIRROR "https://binaries.prismacdn.com".


Содержание


Быстрая диагностика npm install prisma

Сначала запустите npm install prisma с подробным выводом — это покажет, где именно заминается. Команда: npm install prisma --save-dev --verbose. Ищите строки вроде “Downloading Prisma engines” или “preinstall: node scripts/preinstall-entry.js”. Если видите ECONNRESET или ETIMEDOUT, дело в сети. А если “Could not resolve @prisma/client” — клиент не генерируется.

В вашем случае с WSL и PowerShell VPN не помог? Значит, проблема глубже бесплатных прокси — они часто не тянут binaries.prisma.sh. Попробуйте сразу зеркало: в терминале выполните setx PRISMA_ENGINES_MIRROR "https://binaries.prismacdn.com" (для Windows/WSL), перезапустите shell и npm i prisma -D. Это обходит блокировки CDN. Работает в 80% случаев с сетевыми ошибками, как пишут в issues Prisma.

Ещё один быстрый тест: curl -I https://binaries.prisma.sh. Если таймаут — сеть виновата. Не торопитесь с переустановкой всего — начните с этого.


Основные причины падения установки

Почему npm install prisma не скачивает? Чаще всего — preinstall-скрипт Prisma проверяет Node.js и качает engines (бинарники для баз данных). Если Node ниже 14.17, скрипт молча падает без лога. Или сеть блочит binaries.prisma.sh — в регионах с ограничениями это норма, VPN не всегда спасает.

Другая засада: в WSL/PowerShell права на node_modules. EPERM: operation not permitted — классика Windows. Плюс monorepo: @prisma/client уходит в подпроекты, а не в root. Официальные issues подтверждают: preinstall фейлится тихо при старом Node.

А что с VPN? Бесплатные часто рвут соединение на больших файлах (engines ~50MB). Собственный тоже может не пробивать, если нет поддержки SOCKS5 или точного роутинга.


Проверка версии Node.js и окружения

Сначала node -v и npm -v. Prisma требует Node >=14.17, лучше 18+. В WSL покажет одну версию, но npm может тянуть системную — проверьте which node или where.exe node. Если nvm, переключитесь: nvm use 20.

В PowerShell: Get-Command node. Несовпадение — и preinstall бастует. Stack Overflow полон таких кейсов: удалите старые Node из PATH.

Тест: создайте чистый проект npm init -y, потом npm i prisma --save-dev. Установилось? Проблема в вашем проекте (зависимости, lock-файл). Нет? Окружение.


Сетевые проблемы с engines prisma

ECONNRESET или “aborted at TLSSocket” — сеть не достаёт до https://binaries.prisma.sh/all_commits/… В WSL это firewall или MTU. Тест: curl https://binaries.prisma.sh — если ETIMEDOUT, блокировка.

VPN не помог? Попробуйте платный с obfuscation (Mullvad, ExpressVPN) или SOCKS5. Или зеркало: export PRISMA_ENGINES_MIRROR=https://binaries.prismacdn.com (Linux/WSL), setx в Windows. Потом npm i. Reddit и GitHub в один голос.

Прокси? Настройте npm: npm config set proxy http://your-proxy:port. Проверьте tracert binaries.prisma.sh — где теряется пакет.


Исправления для WSL и PowerShell

В WSL: запустите от root? Нет, лучше sudo chown на проект. Ошибка EPERM — npm config set scripts-prepend-node-path true. Или WSL2 MTU: sudo ip link set dev eth0 mtu 1400.

PowerShell: запуск как Admin. Удалите антивирусный quarantine на .dll.node. SO рекомендует.

Общее: rm -rf node_modules package-lock.json, npm cache clean --force, npm i. В WSL добавьте --no-optional если опционалки фейлят.


Проблемы в monorepo и workspaces

Если yarn/pnpm workspaces: prisma generate ищет @prisma/client в root, но он в packages/db. Issue #7234: вручную npm i @prisma/client, потом npx prisma generate.

Для pnpm: --skip-generate или настройте .npmrc. Проверьте package.json — нет ли workspace:*. Официальные доки советуют последовательность: prisma --save-dev, потом @prisma/client, generate.


Дополнительные шаги по восстановлению

  1. Очистка: rm -rf node_modules/.prisma node_modules/@prisma, npm i.
  2. Ручная генерация: npm i @prisma/client, npx prisma generate.
  3. Registry: npm config get registry — должно быть https://registry.npmjs.org. Если кастом — верните дефолт.
  4. Глобальный конфликт: удалите npm uninstall -g prisma, используйте prisma1 если старая версия.

Если ничего — логи: npm install prisma --loglevel=verbose > log.txt. Ищите “Exit status 1” или ELIFECYCLE. GitHub #17073 учит читать их.


Частые ошибки в логах и как их читать

  • ECONNRESET/aborted: сеть, зеркало.
  • ETIMEDOUT: прокси/VPN.
  • preinstall Exit 1: Node версия или права.
  • Could not resolve @prisma/client: monorepo, generate вручную.
  • 404/fast-glob: registry битый, issue #3222.

Лог в ~/.npm/_logs/ — там детали. Supabase troubleshooting добавляет: увеличьте timeout в schema.prisma.


Источники

  1. Prisma GitHub: Cannot install engines on Windows Node 22
  2. Prisma GitHub: Global Prisma 1 conflict
  3. Prisma GitHub: Could not resolve @prisma/client
  4. Stack Overflow: Resolve @prisma/client in monorepo
  5. Prisma Docs: Install Prisma Client
  6. Prisma GitHub: Node version preinstall fail
  7. Stack Overflow: Node version mismatch
  8. NPM: prisma package
  9. Stack Overflow: ETIMEDOUT engines
  10. Prisma GitHub: pnpm workspaces
  11. Reddit: ECONNRESET with VPN
  12. Stack Overflow: Windows EPERM
  13. Prisma GitHub: preinstall ELIFECYCLE
  14. Supabase: Prisma troubleshooting

Заключение

npm install prisma падает в основном из-за сети (зеркало PRISMA_ENGINES_MIRROR решает 70% случаев), Node версии или WSL-прав. Начните с node -v, curl-теста binaries.prisma.sh и очистки кэша — за 5 минут поймёте корень. Если monorepo, вручную генерируйте клиент. В итоге Prisma заработает стабильно, без танцев с VPN. Удачи с проектом!

Авторы
Проверено модерацией
Модерация
Почему npm install prisma падает и не скачивает?