Головна
» Базові знання
»
Як виправити помилку “Prisma Client Has Not Been Generated Yet”
Як виправити помилку “Prisma Client Has Not Been Generated Yet”
Якщо ваш застосунок аварійно завершується з помилкою Prisma Client has not been generated yet, найшвидша корисна реакція — не видаляти все й не перевстановлювати наосліп. Спершу визначте, який генератор Prisma Client використовує ваш проєкт, згенеруйте клієнт із правильної схеми та переконайтеся, що ваш застосунок імпортує з тієї локації, яка насправді була згенерована.
Існує важливе джерело плутанини, пов’язане з версіями. Станом на вересень 2026 року документація Prisma 7 використовує генератор prisma-client з обов’язковою директорією output, і код застосунку імпортує Prisma Client із цього згенерованого шляху. Старіші й досі поширені проєкти використовують prisma-client-js, де @prisma/client є звичайним імпортом, а згенеровані файли, специфічні для проєкту, традиційно розташовувалися в node_modules/.prisma/client. Змішування цих двох наборів інструкцій може призвести до того, що згенерований клієнт опиниться в одному місці, а код застосунку імпортуватиме з іншого. Офіційний посібник із генерації Prisma Client документує поточну поведінку Prisma 7.
Швидка діагностика: що зазвичай означає ця помилка
Що ви спостерігаєте
Найкорисніша перевірка
Наступна дія
Помилка з’являється одразу під час імпорту або створення PrismaClient
Чи був клієнт згенерований для цієї копії репозиторію та схеми?
Виконайте npx prisma generate з правильного пакета.
prisma generate завершується успішно, але застосунок усе одно видає помилку
Чи відповідає ваш імпорт виводу генератора?
Перевірте блок генератора та згенеровану директорію, потім виправте імпорт.
Працює локально, але не працює в CI або продакшені
Чи виконує збірка генерацію після того, як залежності та файли схеми стали доступними?
Додайте явний крок генерації до встановлення або збірки.
Застосунок у монорепозиторії не може знайти клієнт
Який робочий простір володіє schema.prisma та згенерованим кодом?
Згенеруйте в цьому робочому просторі та послідовно експортуйте/імпортуйте його.
Сама генерація зазнає невдачі
Чи є схема дійсною і чи читає Prisma потрібну схему?
Виконайте npx prisma validate, спершу виправивши помилки валідації або шляху.
1. Прочитайте повідомлення про помилку, перш ніж змінювати залежності
Підтверджена частина проста: Prisma Client — це згенерований код, пристосований до вашої схеми. Якщо середовище виконання імпортує точку входу клієнта, згенерована реалізація якої відсутня, застаріла або розташована не там, де очікує імпорт, запуск може зазнати невдачі ще до виконання першого запиту до бази даних.
Що не доводиться самим лише цим повідомленням, то це те, що ваша база даних недоступна, ваші облікові дані неправильні або ваші міграції не вдалися. Ці умови можуть спричиняти інші помилки Prisma, але це конкретне повідомлення насамперед вказує на генерацію та розв’язання модулів.
Дія: занотуйте точний пакет, файл і шлях імпорту з трасування стека. Потім перевірте блок генератора у схемі, перш ніж щось перевстановлювати.
Приклад помилки під час запуску застосунку. Сприймайте її насамперед як проблему генерації клієнта або шляху імпорту, а не як доказ збою бази даних.
2. Визначте свій генератор і очікуваний шлях імпорту
Відкрийте prisma/schema.prisma або шлях до схеми, налаштований для вашого проєкту. Генератор визначає, де створюється Prisma Client і як його слід імпортувати.
За такого шаблону імпортуйте з налаштованого вами виводу, наприклад:
import { PrismaClient } from "../generated/prisma/client";
Поточна документація Prisma зазначає, що output є обов’язковим для генератора prisma-client у Prisma 7 і що імпорти походять із цієї згенерованої локації.
У цій старішій структурі код застосунку зазвичай використовує:
import { PrismaClient } from "@prisma/client";
Дія: не змінюйте імпорт лише тому, що в якомусь посібнику використовується інший генератор. Узгодьте імпорт із вашою власною схемою та версією.
Приклад схеми у застарілому стилі prisma-client-js. У проєктах Prisma 7, які використовують новіший генератор prisma-client, визначте явний шлях виводу та імпортуйте з цієї згенерованої локації.
3. Перевірте схему, потім згенеруйте клієнт
Перед генерацією перевірте схему. Prisma надає prisma validate спеціально для перевірки синтаксису та конфігурації схеми. Офіційний довідник prisma validate також підтримує --schema для нестандартних розташувань схеми.
Дія: прочитайте фінальний вивід prisma generate. Не припускайте, куди були записані файли; використовуйте шлях, який повідомляє Prisma.
Виконайте prisma generate з пакета, який володіє схемою, потім уважно прочитайте рядок виводу, щоб дізнатися, куди було записано клієнт.
4. Переконайтеся, що вивід існує там, де його очікує ваш код
Успішна команда необхідна, але середовище виконання також має бачити ті самі файли. Це стає особливо важливим, коли інструменти збірки копіюють лише частину репозиторію, коли етап Docker пропускає згенерований вивід або коли монорепозиторій збирає один пакет, не зібравши спершу пакет бази даних.
Для prisma-client перевірте спеціальну директорію output зі схеми. Для prisma-client-js перевірте структуру встановленого/згенерованого пакета Prisma, яку використовує ваша версія. Не вважайте теку, показану в старішому прикладі, універсальною.
Дія: порівняйте три речі пліч-о-пліч: output генератора, шлях, повідомлений prisma generate, та інструкцію імпорту у файлі, який зазнає збою. Вони мають описувати той самий згенерований клієнт.
У застарілих проєктах prisma-client-js згенеровані файли зазвичай розташовані в node_modules. Новіші проєкти prisma-client використовують спеціальну директорію виводу, налаштовану в schema.prisma.
5. Виправте імпорт, а не повторюйте генерацію безкінечно
Якщо prisma generate щоразу завершується успішно, але та сама помилка під час виконання залишається, повторний запуск навряд чи допоможе. Наступне питання — чи імпортує ваш застосунок щойно створений згенерований модуль.
Для генератора prisma-client у Prisma 7 поточна документація показує імпорти зі спеціального згенерованого шляху. Для проєкту prisma-client-js очікуваним імпортом пакета є @prisma/client. Ця різниця — одна з найпоширеніших причин, чому поточні та старіші приклади виглядають суперечливими.
Дія: знайдіть у своєму репозиторії всі імпорти PrismaClient. Під час міграції або в монорепозиторії один пакет може бути оновлений, тоді як інший усе ще імпортує старий шлях.
Імпорт має відповідати генератору, який ви насправді використовуєте: @prisma/client для застарілих налаштувань prisma-client-js або налаштований шлях згенерованого виводу для генератора prisma-client у Prisma 7.
6. Перевірте версії пакетів Prisma, якщо проєкт було оновлено
Невідповідність версій — це причина, що залежить від обставин, а не щось, що доводиться цією помилкою саме по собі. Однак посібники з оновлення Prisma радять розробникам оновлювати як пакет CLI prisma, так і @prisma/client під час переходу на нові мажорні версії. Офіційний посібник з оновлення до Prisma 7 показує оновлення обох пакетів разом.
Перевірте, що насправді встановлено:
npm ls prisma @prisma/client
З pnpm або Yarn використовуйте відповідну команду списку для робочого простору, який володіє Prisma. Якщо проєкт навмисно залишається на Prisma 6 або іншій підтримуваній версії, не оновлюйтеся лише для того, щоб прибрати це повідомлення. Узгодьте пакети з версією, яку очікує ваш проєкт, потім згенеруйте знову.
Дія: якщо версії стали неузгодженими після злиття або оновлення залежностей, відновіть потрібні відповідні версії та знову виконайте prisma generate.
7. Зробіть генерацію частиною встановлення або збірки
Коли застосунок працює на машині розробника, але зазнає невдачі після розгортання, відсутній крок часто криється в конвеєрі збірки, а не в коді застосунку. Документація Prisma з усунення несправностей Next.js конкретно рекомендує генерувати Prisma Client під час кожного розгортання, коли кешування залежностей може перешкодити генерації під час встановлення виконатися належним чином.
Дія: перегляньте логи CI і підтвердьте, що prisma generate виконався після того, як правильна схема та залежності стали доступними, і до пакування або запуску сервера.
Додавання явного кроку генерації до скриптів пакета робить локальні збірки та поведінку CI більш передбачуваними. Тримайте точну команду узгодженою з вашим менеджером пакетів і структурою проєкту.
8. Перезапустіть процес після генерації
Сервери розробки, засоби запуску тестів і робочі процеси можуть утримувати модулі завантаженими в пам’яті. Генерація файлів на диску не гарантує, що процес, який уже зазнав невдачі під час імпорту, автоматично перезавантажить їх.
Дія: зупиніть і перезапустіть сервер розробки, робочий процес або процес тестування після успішної генерації. Якщо застосунок тепер переходить до іншої помилки бази даних або конфігурації, це корисний доказ того, що саму проблему генерації клієнта вирішено.
Перезапустіть процес після генерації, щоб середовище виконання перезавантажило згенерований модуль, а не утримувало в пам’яті невдалий або застарілий імпорт.
Монорепозиторії: генеруйте в пакеті, який володіє схемою
У робочому просторі запуск npx prisma generate з кореня репозиторію не є автоматично еквівалентним генерації всередині пакета бази даних. Виявлення схеми, файли конфігурації, залежності та відносні шляхи виводу можуть відрізнятися залежно від пакета.
Генеруйте з packages/database, експортуйте клієнт із цього пакета, і нехай застосунки залежать від пакета, а не звертаються до приватної згенерованої директорії іншого робочого простору.
Дія: зробіть завдання збірки або генерації пакета бази даних явною залежністю будь-якого застосунку, який його імпортує.
Чи потрібно видаляти node_modules?
Не як перший крок. Видалення node_modules може виправити пошкоджене встановлення, але також може приховати справжню проблему, змусивши багато не пов’язаних пакетів змінитися одночасно. Якщо валідація схеми успішна, а генерація повідомляє правильний вивід, спершу перевірте імпорти, версії пакетів і шляхи збірки.
Чисте перевстановлення стає розумним, коли метадані пакетів неузгоджені, згенерований вивід явно застарів після змін залежностей або ваш менеджер пакетів повідомляє про проблеми встановлення.
Дія: збережіть вивід npm ls prisma @prisma/client і prisma generate перед очищенням. Це дасть вам докази для порівняння після перевстановлення.
Чого ця помилка вам не повідомляє
Вона сама по собі не доводить, що ваша база даних недоступна. Спершу виправте генерацію/розв’язання імпорту, потім оцініть будь-яку помилку з’єднання, що залишилася.
Вона не доводить, що міграції відсутні. Генерація Prisma Client і міграція схеми бази даних — пов’язані робочі процеси, але це не та сама операція.
Вона не означає, що кожен проєкт має імпортувати з @prisma/client. Це залежить від генератора та версії Prisma.
Вона не означає, що перевстановлення залежностей завжди потрібне. Правильного prisma generate разом із правильним шляхом імпорту часто достатньо.
Контрольний список для запобігання
Виконуйте prisma validate, коли змінюється схема або конфігурація генератора.
Виконуйте prisma generate після змін схеми та після отримання змін, які впливають на API згенерованого клієнта.
Тримайте імпорт під час виконання узгодженим із налаштованим виводом генератора.
Тримайте версії prisma і @prisma/client узгодженими, коли обрана вами версія Prisma використовує обидва пакети.
У CI та продакшені явно запускайте генерацію перед збіркою/запуском, коли кешування залежностей могло б її пропустити.
У монорепозиторіях генеруйте в робочому просторі, який володіє схемою, і надавайте клієнт через стабільну межу пакета.
Перезапускайте тривалі процеси розробки після генерації раніше відсутнього клієнта.
Для платформ розгортання, які кешують залежності, запускайте prisma generate явно під час встановлення або збірки, замість того щоб припускати, що раніше згенерований клієнт усе ще актуальний.
Підсумок
Надійне виправлення — це короткий ланцюжок доказів: визначте свій генератор Prisma, перевірте потрібну схему, згенеруйте клієнт, переконайтеся в фактичному шляху виводу та приведіть свій імпорт у відповідність до цього виводу. Якщо проблема виникає лише в CI або продакшені, перенесіть той самий крок генерації в робочий процес збірки. Якщо вона виникає в монорепозиторії, зробіть генерацію відповідальністю пакета, який володіє схемою.
Такий підхід надійніший, ніж повторне видалення залежностей, оскільки він показує, який саме шар був неправильним: вибір схеми, генерація, версії пакетів, розв’язання імпорту чи пакування під час розгортання.