Sākums
» Pamatzināšanas
»
Kā novērst kļūdu “Prisma Client has not been generated yet”
Kā novērst kļūdu “Prisma Client has not been generated yet”
Ja jūsu lietotne avarē ar Prisma Client has not been generated yet, ātrākā lietderīgā reakcija nav dzēst visu un akli pārinstalēt. Vispirms nosakiet, kuru Prisma Client ģeneratoru jūsu projekts izmanto, ģenerējiet klientu no pareizās shēmas un pārliecinieties, ka jūsu lietotne importē no vietas, kas faktiski tika ģenerēta.
Pastāv svarīgs ar versiju saistīts neskaidrības avots. Kā pārbaudīts 2026. gada septembrī, Prisma 7 dokumentācija izmanto prisma-client ģeneratoru ar obligātu output direktoriju, un lietotnes kods importē Prisma Client no šī ģenerētā ceļa. Vecāki un joprojām izplatīti projekti izmanto prisma-client-js, kur @prisma/client ir parastais imports un ģenerētie projekta specifiskie faili tradicionāli atradās zem node_modules/.prisma/client. Šo divu instrukciju kopu sajaukšana var novest pie tā, ka ģenerētais klients atrodas vienā vietā, bet lietotnes kods importē citu. Oficiālais Prisma Client ģenerēšanas ceļvedis dokumentē pašreizējo Prisma 7 uzvedību.
Ātrā diagnostika: ko kļūda parasti nozīmē
Ko jūs novērojat
Noderīgākā pārbaude
Nākamā darbība
Kļūda parādās uzreiz, importējot vai konstruējot PrismaClient
Vai klients tika ģenerēts šim izrakstam un shēmai?
Palaidiet npx prisma generate no pareizās pakotnes.
prisma generate izdodas, bet lietotne joprojām met kļūdu
Vai jūsu imports atbilst ģeneratora izvadei?
Pārbaudiet ģeneratora bloku un ģenerēto direktoriju, pēc tam izlabojiet importu.
Darbojas lokāli, bet neizdodas CI vai ražošanā
Vai būvēšana palaiž ģenerēšanu pēc tam, kad atkarības un shēmas faili ir pieejami?
Pievienojiet skaidru ģenerēšanas soli instalēšanai vai būvēšanai.
Monorepo lietotne nevar atrisināt klientu
Kurš darbvietas projekts pārvalda schema.prisma un ģenerēto kodu?
Ģenerējiet tajā darbvietā un konsekventi eksportējiet/importējiet to.
Pati ģenerēšana neizdodas
Vai shēma ir derīga un vai Prisma nolasa paredzēto shēmu?
Palaidiet npx prisma validate, vispirms novēršot validācijas vai ceļa kļūdas.
1. Izlasiet kļūdu pirms atkarību maiņas
Apstiprinātā daļa ir vienkārša: Prisma Client ir ģenerēts kods, kas pielāgots jūsu shēmai. Ja izpildlaiks importē klienta ieejas punktu, kura ģenerētā implementācija nav pieejama, ir novecojusi vai neatrodas tur, kur imports to sagaida, palaišana var neizdoties pirms jūsu pirmā datubāzes vaicājuma izpildes.
Šis ziņojums vien pats par sevi nepierāda, ka jūsu datubāze ir nestrādājoša, ka jūsu akreditācijas dati ir nepareizi vai ka jūsu migrācijas neizdevās. Šie apstākļi var izraisīt citas Prisma kļūdas, bet šis konkrētais ziņojums vispirms norāda uz ģenerēšanu un moduļu atrisināšanu.
Darbība: pierakstiet precīzo pakotni, failu un importa ceļu steka izsekojumā. Pēc tam pārbaudiet ģeneratora bloku shēmā, pirms kaut ko pārinstalējat.
Kļūdas piemērs lietotnes palaišanas laikā. Uztveriet to vispirms kā klienta ģenerēšanas vai importa ceļa problēmu, nevis kā datubāzes dīkstāves pierādījumu.
2. Nosakiet savu ģeneratoru un paredzamo importa ceļu
Atveriet prisma/schema.prisma vai shēmas ceļu, kas konfigurēts jūsu projektam. Ģenerators nosaka, kur Prisma Client tiek izveidots un kā jums tas jāimportē.
Šajā vecākajā izkārtojumā lietotnes kods parasti izmanto:
import { PrismaClient } from "@prisma/client";
Darbība: nemainiet importu tikai tāpēc, ka kāda apmācība izmanto citu ģeneratoru. Saskaņojiet importu ar savu shēmu un versiju.
Mantotā stila prisma-client-js shēmas piemērs. Prisma 7 projektos, kas izmanto jaunāko prisma-client ģeneratoru, definējiet skaidru izvades ceļu un importējiet no šīs ģenerētās vietas.
3. Validējiet shēmu, pēc tam ģenerējiet klientu
Pirms ģenerēšanas validējiet shēmu. Prisma nodrošina prisma validate tieši shēmas sintakses un konfigurācijas pārbaudei. Oficiālā prisma validate atsauce arī atbalsta --schema nestandarta shēmas atrašanās vietām.
Oficiālā generate komandas atsauce skaidro, ka Prisma pārbauda shēmu un ieraksta ģenerētos artefaktus izvadē, kas konfigurēta ģeneratorā.
Darbība: izlasiet prisma generate galīgo izvadi. Nepieņemiet, kur faili tika ierakstīti; izmantojiet ceļu, ko Prisma norāda.
Palaidiet prisma generate no pakotnes, kas pārvalda shēmu, pēc tam uzmanīgi izlasiet izvades rindu, lai uzzinātu, kur klients tika ierakstīts.
4. Pārbaudiet, vai izvade pastāv tur, kur jūsu kods to sagaida
Veiksmīga komanda ir nepieciešama, bet izpildlaikam arī ir jāredz tie paši faili. Tas kļūst īpaši svarīgi, kad būvēšanas rīki kopē tikai daļu repozitorija, kad Docker posms izlaiž ģenerēto izvadi vai kad monorepo būvē vienu pakotni, vispirms neuzbūvējot datubāzes pakotni.
Attiecībā uz prisma-client pārbaudiet pielāgoto output direktoriju no shēmas. Attiecībā uz prisma-client-js pārbaudiet instalētā/ģenerētā Prisma pakotnes izkārtojumu, ko izmanto jūsu versija. Neuzskatiet mapi, kas parādīta vecākā piemērā, par universālu.
Darbība: salīdziniet trīs lietas blakus: ģeneratora output, ceļu, ko norāda prisma generate, un importa priekšrakstu failā, kas avarē. Tiem jāapraksta viens un tas pats ģenerētais klients.
Mantotajos prisma-client-js projektos ģenerētie faili parasti atrodas zem node_modules. Jaunākie prisma-client projekti izmanto pielāgoto izvades direktoriju, kas konfigurēts schema.prisma.
5. Izlabojiet importu, nevis bezgalīgi ģenerējiet no jauna
Ja prisma generate katru reizi izdodas, bet tā pati izpildlaika kļūda saglabājas, atkārtota tās palaišana, visticamāk, nepalīdzēs. Nākamais jautājums ir, vai jūsu lietotne importē ģenerēto moduli, ko tikko izveidojāt.
Prisma 7 prisma-client ģeneratoram pašreizējā dokumentācija rāda importus no pielāgotā ģenerētā ceļa. prisma-client-js projektam @prisma/client ir paredzamais pakotnes imports. Šī atšķirība ir viens no biežākajiem iemesliem, kāpēc pašreizējie un vecākie piemēri šķietami ir pretrunā viens ar otru.
Darbība: meklējiet savā repozitorijā katru PrismaClient importu. Migrācijas vai monorepo gadījumā viena pakotne var tikt atjaunināta, kamēr cita joprojām importē veco ceļu.
Importam ir jāatbilst ģeneratoram, ko faktiski izmantojat: @prisma/client mantotajiem prisma-client-js iestatījumiem vai jūsu konfigurētajam ģenerētās izvades ceļam Prisma 7 prisma-client ģeneratoram.
6. Pārbaudiet Prisma pakotņu versijas, kad projekts ir jaunināts
Versiju nesakritība ir no apstākļiem atkarīgs cēlonis, nevis kaut kas, ko šī kļūda pati par sevi pierāda. Tomēr Prisma jaunināšanas ceļveži norāda izstrādātājiem atjaunināt gan prisma CLI pakotni, gan @prisma/client, pārejot uz galvenajām versijām. Oficiālais Prisma 7 jaunināšanas ceļvedis rāda abas pakotnes tiek jauninātas kopā.
Pārbaudiet, kas faktiski ir instalēts:
npm ls prisma @prisma/client
Ar pnpm vai Yarn izmantojiet līdzvērtīgu saraksta komandu darbvietai, kas pārvalda Prisma. Ja projekts apzināti paliek pie Prisma 6 vai citas atbalstītas versijas, nejauniniet tikai tāpēc, lai novērstu šo ziņojumu. Saskaņojiet pakotnes ar versiju, ko jūsu projekts sagaida, pēc tam ģenerējiet no jauna.
Darbība: ja versijas kļuva nekonsekventas pēc sapludināšanas vai atkarību atjaunināšanas, atjaunojiet paredzētās atbilstošās versijas un palaidiet prisma generate vēlreiz.
7. Iekļaujiet ģenerēšanu instalēšanā vai būvēšanā
Kad lietotne darbojas izstrādātāja mašīnā, bet neizdodas pēc izvietošanas, trūkstošais solis bieži ir būvēšanas plūsmā, nevis lietotnes kodā. Prisma Next.js problēmu novēršanas dokumentācija īpaši iesaka ģenerēt Prisma Client katrā izvietošanas reizē, kad atkarību kešošana var neļaut instalēšanas laika ģenerēšanai darboties, kā paredzēts.
Parasti jums ir nepieciešams viens uzticams ģenerēšanas punkts, nevis katrs iespējamais āķis. Izvēlieties āķi, ko jūsu izvietošanas platforma faktiski izpilda. Skatiet Prisma oficiālo Next.js izvietošanas problēmu novēršanas lapu ar kešošanu saistītajam gadījumam.
Darbība: pārbaudiet CI žurnālus un apstipriniet, ka prisma generate tika palaists pēc tam, kad pareizā shēma un atkarības bija pieejamas, un pirms komplektēšanas vai servera palaišanas.
Skaidra ģenerēšanas soļa pievienošana pakotnes skriptiem padara lokālās būves un CI uzvedību paredzamāku. Saglabājiet precīzu komandu konsekventu ar jūsu pakotņu pārvaldnieku un projekta izkārtojumu.
8. Restartējiet procesu pēc ģenerēšanas
Izstrādes serveri, testu palaidēji un darbinieku procesi var turēt moduļus ielādētus atmiņā. Failu ģenerēšana diskā negarantē, ka process, kas jau neizdevās importēt, tos automātiski pārlādēs.
Darbība: apturiet un restartējiet izstrādes serveri, darbinieku vai testa procesu pēc veiksmīgas ģenerēšanas. Ja lietotne tagad virzās uz citu datubāzes vai konfigurācijas kļūdu, tas ir noderīgs pierādījums, ka pati klienta ģenerēšanas problēma ir novērsta.
Restartējiet procesu pēc ģenerēšanas, lai izpildlaiks pārlādētu ģenerēto moduli, nevis turētu neizdevušos vai novecojušu importu atmiņā.
Monorepo: ģenerējiet pakotnē, kas pārvalda shēmu
Darbvietā npx prisma generate palaišana no repozitorija saknes nav automātiski līdzvērtīga ģenerēšanai datubāzes pakotnē. Shēmas atklāšana, konfigurācijas faili, atkarības un relatīvie izvades ceļi var atšķirties atkarībā no pakotnes.
Prisma oficiālais pnpm darbvietu ceļvedis demonstrē īpašu datubāzes pakotni ar savu shēmu, ģenerēto klientu, palīgskriptiem un eksportiem patērētāju lietotnēm.
Ģenerējiet no packages/database, eksportējiet klientu no šīs pakotnes un ļaujiet lietotnēm būt atkarīgām no pakotnes, nevis iekļūt citas darbvietas privātajā ģenerētajā direktorijā.
Darbība: padariet datubāzes pakotnes būvēšanas vai ģenerēšanas uzdevumu par skaidru atkarību jebkurai lietotnei, kas to importē.
Vai jums ir jādzēš node_modules?
Ne kā pirmais solis. node_modules dzēšana var novērst bojātu instalāciju, bet tā var arī paslēpt īsto problēmu, liekot daudzām nesaistītām pakotnēm mainīties vienlaikus. Ja shēmas validācija izdodas un ģenerēšana ziņo par pareizo izvadi, vispirms pārbaudiet importus, pakotņu versijas un būvēšanas ceļus.
Tīra pārinstalēšana kļūst pamatota, kad pakotnes metadati ir nekonsekventi, ģenerētā izvade ir acīmredzami novecojusi pēc atkarību izmaiņām vai jūsu pakotņu pārvaldnieks ziņo par instalēšanas problēmām.
Darbība: pirms tīrīšanas saglabājiet npm ls prisma @prisma/client un prisma generate izvadi. Tas sniedz jums pierādījumus salīdzināšanai pēc pārinstalēšanas.
Ko šī kļūda jums nepasaka
Tā pati par sevi nepierāda, ka jūsu datubāze ir nesasniedzama. Vispirms novērsiet ģenerēšanas/importa atrisināšanu, pēc tam novērtējiet jebkuru atlikušo savienojuma kļūdu.
Tā nepierāda, ka trūkst migrāciju. Prisma Client ģenerēšana un datubāzes shēmas migrācija ir saistītas darbplūsmas, bet tās nav viens un tas pats darbs.
Tā nenozīmē, ka katram projektam jāimportē no @prisma/client. Tas ir atkarīgs no ģeneratora un Prisma versijas.
Tā nenozīmē, ka vienmēr ir nepieciešama atkarību pārinstalēšana. Pareizs prisma generate plus pareizs importa ceļš bieži ir pietiekami.
Profilakses kontrolsaraksts
Palaidiet prisma validate, kad mainās shēma vai ģeneratora konfigurācija.
Palaidiet prisma generate pēc shēmas izmaiņām un pēc izmaiņu iegūšanas, kas ietekmē ģenerētā klienta API.
Saglabājiet izpildlaika importu saskaņotu ar konfigurēto ģeneratora izvadi.
Saglabājiet prisma un @prisma/client versijas saskaņotas, kad jūsu izvēlētā Prisma versija izmanto abas pakotnes.
CI un ražošanā palaidiet ģenerēšanu skaidri pirms būvēšanas/palaišanas, kad atkarību kešošana varētu to izlaist.
Monorepo ģenerējiet darbvietā, kas pārvalda shēmu, un pakļaujiet klientu caur stabilu pakotnes robežu.
Restartējiet ilgstoši darbojošos izstrādes procesus pēc iepriekš trūkstoša klienta ģenerēšanas.
Izvietošanas platformām, kas kešo atkarības, palaidiet prisma generate skaidri instalēšanas vai būvēšanas laikā, nevis pieņemot, ka iepriekš ģenerētais klients joprojām ir aktuāls.
Galvenais
Uzticamais risinājums ir īsa pierādījumu ķēde: identificējiet savu Prisma ģeneratoru, validējiet paredzēto shēmu, ģenerējiet klientu, pārbaudiet faktisko izvades ceļu un saskaņojiet savu importu ar šo izvadi. Ja problēma rodas tikai CI vai ražošanā, pārvietojiet to pašu ģenerēšanas soli uz būvēšanas darbplūsmu. Ja tā rodas monorepo, padariet ģenerēšanu par pakotnes, kas pārvalda shēmu, atbildību.
Šī pieeja ir uzticamāka nekā atkārtota atkarību dzēšana, jo tā parāda, kurš slānis bija nepareizs: shēmas izvēle, ģenerēšana, pakotņu versijas, importa atrisināšana vai izvietošanas komplektēšana.