# 🔧 Исправление ошибки Prisma Client (Финальное решение) ## История проблемы ### Попытка #1: --ignore-scripts После добавления `--ignore-scripts` для ускорения сборки появилась ошибка: ``` Type error: Module '"@prisma/client"' has no exported member 'PrismaClient'. ``` **Причина:** `--ignore-scripts` блокирует скачивание бинарных движков Prisma. ### Попытка #2: Переустановка production зависимостей Убрали переустановку, но Prisma Client все равно не генерировался. **Причина:** Даже если запустить `prisma generate`, без бинарных движков он не сработает. ### Попытка #3: Генерация без движков Пытались скачать движки через `prisma version` или генерировать явно. **Причина:** Движки скачиваются только через postinstall скрипт `@prisma/client`. ## ✅ Финальное решение: Трехшаговая установка ### Концепция 1. **Шаг 1:** Устанавливаем ТОЛЬКО Prisma (2 пакета) **с postinstall** - Это быстро (~30 секунд), потому что всего 2 пакета - Postinstall скачает бинарные движки 2. **Шаг 2:** Генерируем Prisma Client - Движки уже есть, генерация работает 3. **Шаг 3:** Устанавливаем ВСЕ остальные зависимости **с --ignore-scripts** - Это быстро (3-5 минут), потому что пропускаем компиляцию - Prisma уже установлен и не трогается ### Код в Dockerfile ```dockerfile # ШАГ 1: Устанавливаем ТОЛЬКО Prisma (с postinstall - быстро, ~30 сек) RUN yarn add prisma@6.7.0 @prisma/client@6.7.0 --exact --network-timeout 300000 # ШАГ 2: Генерируем Prisma Client RUN npx prisma generate --schema=./prisma/schema.prisma && \ echo "✅ Prisma Client сгенерирован" # ШАГ 3: Устанавливаем ВСЕ остальные зависимости с --ignore-scripts (быстро!) RUN yarn install --network-timeout 300000 --ignore-scripts --prefer-offline # Проверка RUN test -d node_modules/.prisma/client && \ test -f node_modules/.prisma/client/index.js && \ echo "✅ Prisma Client готов к работе" ``` ## ⏱️ Время сборки | Этап | Время | Описание | |------|-------|----------| | Шаг 1: Prisma | 30-60 сек | Установка 2 пакетов с postinstall | | Шаг 2: Generate | 10-20 сек | Генерация клиента | | Шаг 3: Остальное | 3-5 минут | Установка ~100 пакетов без компиляции | | Сборка Next.js | 3-5 минут | Компиляция приложения | | **ИТОГО** | **8-12 минут** | ⚡ Вместо 16+ часов! | ## Применение ### 1. Получите обновление ```bash cd /home/ubuntu/global_it24_landing git pull origin master ``` Проверьте, что получили правильную версию: ```bash git log --oneline -1 # Должно показать: "Исправлено: трехшаговая установка..." ``` ### 2. Очистите Docker кеш (ВАЖНО!) ```bash docker system prune -a ``` ⚠️ Это критично! Старый кеш может содержать сломанные слои. ### 3. Запустите сборку ```bash ./deploy-simple.sh ``` ### 4. Мониторинг (опционально) В другом терминале: ```bash watch -n 2 "docker ps -a | tail -5" ``` ## ✅ Проверка результата После завершения сборки: ```bash # Статус ./status.sh # Логи (не должно быть ошибок Prisma) ./logs.sh # HTTP проверка curl http://localhost:3000 ``` Ожидаемый результат: ``` ✅ global_it24_web Up 0.0.0.0:3000->3000/tcp ✅ global_it24_db Up 5432/tcp ``` ## 🎯 Почему это работает ### Проблема с --ignore-scripts `--ignore-scripts` пропускает **все** postinstall скрипты, включая: - ✅ Компиляцию нативных модулей (хорошо - экономия времени) - ❌ Скачивание бинарных движков Prisma (плохо - ломает Prisma) ### Наше решение 1. Устанавливаем Prisma **отдельно** (без --ignore-scripts) - Только 2 пакета → быстро - Postinstall запускается → движки скачиваются 2. Генерируем клиент - Движки есть → генерация работает 3. Устанавливаем остальное (с --ignore-scripts) - Prisma уже установлен → Yarn его не трогает - Остальные пакеты устанавливаются быстро ## ❓ Troubleshooting ### Ошибка "Prisma Client not generated" Проверьте наличие schema.prisma: ```bash ls -la /home/ubuntu/global_it24_landing/nextjs_space/prisma/ ``` Должен быть файл `schema.prisma`. ### Ошибка при yarn install на шаге 3 Возможно yarn.lock требует обновления: ```bash cd /home/ubuntu/global_it24_landing/nextjs_space rm yarn.lock yarn install ``` Затем закоммитьте: ```bash cd .. git add nextjs_space/yarn.lock git commit -m "Обновлен yarn.lock" git push origin master ``` ### Сборка все еще долгая Если шаг 1 (установка Prisma) занимает >2 минут: ```bash # Проверьте интернет ping -c 3 registry.yarnpkg.com # Проверьте RAM free -h ``` Минимум 2GB RAM необходимо. ## 📖 Дополнительно - **QUICK_FIX.md** - исправление зависания сборки - **SUMMARY.txt** - полная сводка всех изменений - **UPDATE_FROM_GIT.md** - обновление проекта --- **Репозиторий:** git.mscsrv.ru/sa/global_it24_landing.git **Коммит:** "Исправлено: трехшаговая установка зависимостей для корректной работы Prisma"