Početna
» Osnovno znanje
»
Kako ispraviti pogrešku „Prisma Client has not been generated yet”
Kako ispraviti pogrešku „Prisma Client has not been generated yet”
Ako se vaša aplikacija ruši s porukom Prisma Client has not been generated yet, najbrži koristan odgovor nije obrisati sve i naslijepo ponovno instalirati. Najprije utvrdite koji generator Prisma Clienta koristi vaš projekt, generirajte klijent iz ispravne sheme i pobrinite se da vaša aplikacija uvozi s lokacije koja je stvarno generirana.
Postoji važan izvor zabune povezan s verzijama. Kako je provjereno u rujnu 2026., dokumentacija Prisme 7 koristi generator prisma-client s obaveznim izlaznim direktorijem output, a aplikacijski kod uvozi Prisma Client s te generirane putanje. Stariji i još uvijek česti projekti koriste prisma-client-js, gdje je @prisma/client uobičajeni uvoz, a generirane datoteke specifične za projekt tradicionalno se nalaze pod node_modules/.prisma/client. Miješanje tih dvaju skupova uputa može dovesti do toga da generirani klijent završi na jednom mjestu, a aplikacijski kod uvozi s drugoga. Službeni vodič za generiranje Prisma Clienta dokumentira trenutačno ponašanje Prisme 7.
Brza dijagnoza: što pogreška obično znači
Što uočavate
Najkorisnija provjera
Sljedeća radnja
Pogreška se pojavljuje odmah pri uvozu ili konstruiranju PrismaClienta
Je li klijent generiran za ovu kopiju i shemu?
Pokrenite npx prisma generate iz ispravnog paketa.
prisma generate uspije, ali aplikacija i dalje prijavljuje pogrešku
Odgovara li vaš uvoz izlazu generatora?
Pregledajte blok generatora i generirani direktorij, zatim ispravite uvoz.
Radi lokalno, ali ne uspijeva u CI-ju ili produkciji
Pokreće li izgradnja generiranje nakon što su dostupne ovisnosti i datoteke sheme?
Dodajte izričit korak generiranja u instalaciju ili izgradnju.
Aplikacija u monorepu ne može razriješiti klijent
Koji radni prostor posjeduje schema.prisma i generirani kod?
Generirajte u tom radnom prostoru i dosljedno ga izvezite/uvozite.
Generiranje samo po sebi ne uspijeva
Je li shema valjana i čita li Prisma predviđenu shemu?
Pokrenite npx prisma validate i najprije ispravite pogreške validacije ili putanje.
1. Pročitajte uzrok prije mijenjanja ovisnosti
Potvrđeni dio je jednostavan: Prisma Client je generirani kod prilagođen vašoj shemi. Ako izvršno okruženje uvozi ulaznu točku klijenta čija generirana implementacija nedostaje, zastarjela je ili nije tamo gdje je uvoz očekuje, pokretanje može pasti prije nego što se izvrši prvi upit prema bazi podataka.
Ono što sama ova poruka ne dokazuje jest da je vaša baza podataka nedostupna, da su vjerodajnice pogrešne ili da su migracije neuspjele. Ti uvjeti mogu uzrokovati druge Prisma pogreške, ali ova konkretna poruka upućuje najprije na generiranje i razrješavanje modula.
Radnja: zabilježite točan paket, datoteku i putanju uvoza u zapisu stoga. Zatim provjerite blok generatora u shemi prije nego što bilo što ponovno instalirate.
Primjer pogreške pri pokretanju aplikacije. Tretirajte je najprije kao problem generiranja klijenta ili putanje uvoza, a ne kao dokaz prekida rada baze podataka.
2. Utvrdite svoj generator i očekivanu putanju uvoza
Otvorite prisma/schema.prisma ili putanju sheme konfiguriranu za vaš projekt. Generator određuje gdje se Prisma Client stvara i kako ga trebate uvoziti.
U ovom starijem rasporedu aplikacijski kod obično koristi:
import { PrismaClient } from "@prisma/client";
Radnja: nemojte mijenjati uvoz samo zato što neki vodič koristi drugi generator. Uskladite uvoz sa svojom shemom i verzijom.
Primjer sheme u naslijeđenom stilu prisma-client-js. U projektima s Prismom 7 koji koriste noviji generator prisma-client definirajte izričitu izlaznu putanju i uvozite s te generirane lokacije.
3. Validirajte shemu, zatim generirajte klijent
Prije generiranja validirajte shemu. Prisma nudi prisma validate upravo za provjeru sintakse i konfiguracije sheme. Službeni priručnik za prisma validate također podržava --schema za nestandardne lokacije sheme.
Radnja: pročitajte konačni izlaz naredbe prisma generate. Ne pretpostavljajte gdje su datoteke zapisane; upotrijebite putanju koju Prisma prijavi.
Pokrenite prisma generate iz paketa koji posjeduje shemu, zatim pažljivo pročitajte izlazni redak kako biste saznali gdje je klijent zapisan.
4. Provjerite postoji li izlaz tamo gdje ga vaš kod očekuje
Uspješna naredba je nužna, ali izvršno okruženje također mora vidjeti iste datoteke. To postaje osobito važno kada alati za izgradnju kopiraju samo dio repozitorija, kada Docker faza izostavi generirani izlaz ili kada monorepo gradi jedan paket bez prethodne izgradnje paketa baze podataka.
Za prisma-client pregledajte prilagođeni direktorij output iz sheme. Za prisma-client-js pregledajte raspored instaliranog/generiranog Prisma paketa koji koristi vaša verzija. Nemojte smatrati da je mapa prikazana u starijem primjeru univerzalna.
Radnja: usporedite tri stvari jednu uz drugu: generator output, putanju koju prijavi prisma generate i naredbu import u datoteci koja se ruši. Trebale bi opisivati isti generirani klijent.
U naslijeđenim projektima prisma-client-js generirane datoteke obično se nalaze pod node_modules. Noviji projekti prisma-client koriste prilagođeni izlazni direktorij konfiguriran u schema.prisma.
5. Ispravite uvoz umjesto beskonačnog ponovnog generiranja
Ako prisma generate svaki put uspije, ali ista pogreška pri izvođenju ostaje, ponovno pokretanje vjerojatno neće pomoći. Sljedeće je pitanje uvozi li vaša aplikacija generirani modul koji ste upravo stvorili.
Za generator prisma-client u Prismi 7 trenutačna dokumentacija prikazuje uvoze s prilagođene generirane putanje. Za projekt prisma-client-js, @prisma/client je očekivani uvoz paketa. Ta je razlika jedan od najčešćih razloga zašto se trenutačni i stariji primjeri čine proturječnima.
Radnja: pretražite svoj repozitorij za svaki uvoz PrismaClienta. Tijekom migracije ili u monorepu jedan paket može biti ažuriran dok drugi još uvijek uvozi staru putanju.
Uvoz mora odgovarati generatoru koji stvarno koristite: @prisma/client za naslijeđene postavke prisma-client-js ili vaša konfigurirana generirana izlazna putanja za generator prisma-client u Prismi 7.
6. Provjerite verzije Prisma paketa kada je projekt nadograđen
Neusklađenost verzija je uzrok koji ovisi o okolnostima, a ne nešto što ova pogreška sama po sebi dokazuje. Međutim, Prismini vodiči za nadogradnju upućuju razvojne programere da ažuriraju i CLI paket prisma i @prisma/client pri prelasku na glavne verzije. Službeni vodič za nadogradnju na Prismu 7 prikazuje nadogradnju obaju paketa zajedno.
Provjerite što je stvarno instalirano:
npm ls prisma @prisma/client
Uz pnpm ili Yarn upotrijebite odgovarajuću naredbu za popis u radnom prostoru koji posjeduje Prismu. Ako projekt namjerno ostaje na Prismi 6 ili drugoj podržanoj verziji, nemojte nadograđivati samo da biste uklonili ovu poruku. Uskladite pakete s verzijom koju vaš projekt očekuje, zatim ponovno generirajte.
Radnja: ako su verzije postale neusklađene nakon spajanja ili ažuriranja ovisnosti, vratite predviđene odgovarajuće verzije i ponovno pokrenite prisma generate.
7. Uključite generiranje u instalaciju ili izgradnju
Kada aplikacija radi na razvojnom računalu, ali ne uspijeva nakon implementacije, korak koji nedostaje često je u procesu izgradnje, a ne u aplikacijskom kodu. Prismina dokumentacija za rješavanje problema s Next.js-om posebno preporučuje generiranje Prisma Clienta pri svakoj implementaciji kada predmemoriranje ovisnosti može spriječiti generiranje tijekom instalacije da se izvrši prema očekivanju.
Obično vam treba jedna pouzdana točka generiranja, a ne svaki mogući hook. Odaberite hook koji vaša platforma za implementaciju stvarno izvršava. Pogledajte Prisminu službenu stranicu za rješavanje problema s implementacijom Next.js-a za slučaj povezan s predmemoriranjem.
Radnja: pregledajte CI zapise i potvrdite da se prisma generate izvršio nakon što su ispravna shema i ovisnosti bile dostupne te prije pakiranja ili pokretanja poslužitelja.
Dodavanje izričitog koraka generiranja u skripte paketa čini lokalne izgradnje i ponašanje CI-ja predvidljivijima. Neka točna naredba bude usklađena s vašim upraviteljem paketa i rasporedom projekta.
8. Ponovno pokrenite proces nakon generiranja
Razvojni poslužitelji, pokretači testova i radnički procesi mogu držati module učitane u memoriji. Generiranje datoteka na disku ne jamči da će proces koji je već pao pri uvozu automatski ponovno učitati te datoteke.
Radnja: zaustavite i ponovno pokrenite razvojni poslužitelj, radnika ili testni proces nakon uspješnog generiranja. Ako aplikacija sada prijeđe na drugu pogrešku baze podataka ili konfiguracije, to je koristan dokaz da je sam problem generiranja klijenta riješen.
Ponovno pokrenite proces nakon generiranja kako bi izvršno okruženje ponovno učitalo generirani modul umjesto da drži neuspjeli ili zastarjeli uvoz u memoriji.
Monorepo: generirajte u paketu koji posjeduje shemu
U radnom prostoru, pokretanje npx prisma generate iz korijena repozitorija nije automatski jednako generiranju unutar paketa baze podataka. Otkrivanje sheme, konfiguracijske datoteke, ovisnosti i relativne izlazne putanje mogu se razlikovati od paketa do paketa.
Prismin službeni vodič za pnpm radne prostore prikazuje namjenski paket baze podataka s vlastitom shemom, generiranim klijentom, pomoćnim skriptama i izvozima za aplikacije koje ga koriste.
Generirajte iz packages/database, izvezite klijent iz tog paketa i neka aplikacije ovise o paketu umjesto da posežu u privatni generirani direktorij drugog radnog prostora.
Radnja: učinite zadatak izgradnje ili generiranja paketa baze podataka izričitom ovisnošću svake aplikacije koja ga uvozi.
Trebate li izbrisati node_modules?
Ne kao prvi korak. Brisanje node_modules može popraviti oštećenu instalaciju, ali može i prikriti stvarni problem prisiljavajući mnoge nepovezane pakete da se promijene odjednom. Ako validacija sheme uspije i generiranje prijavi ispravan izlaz, najprije provjerite uvoze, verzije paketa i putanje izgradnje.
Čista ponovna instalacija postaje razumna kada su metapodaci paketa neusklađeni, generirani izlaz očito zastario nakon promjena ovisnosti ili vaš upravitelj paketa prijavljuje probleme s instalacijom.
Radnja: zabilježite npm ls prisma @prisma/client i izlaz naredbe prisma generate prije čišćenja. To vam daje dokaze za usporedbu nakon ponovne instalacije.
Što vam ova pogreška ne govori
Sama po sebi ne dokazuje da je vaša baza podataka nedostupna. Najprije riješite generiranje/razrješavanje uvoza, zatim procijenite svaku preostalu pogrešku povezivanja.
Ne dokazuje da migracije nedostaju. Generiranje Prisma Clienta i migracija sheme baze podataka povezani su tijekovi rada, ali nisu ista operacija.
Ne znači da bi svaki projekt trebao uvoziti iz @prisma/client. To ovisi o generatoru i verziji Prisme.
Ne znači da je ponovna instalacija ovisnosti uvijek potrebna. Ispravan prisma generate plus ispravna putanja uvoza često su dovoljni.
Kontrolni popis za prevenciju
Pokrenite prisma validate kada se promijeni shema ili konfiguracija generatora.
Pokrenite prisma generate nakon promjena sheme i nakon povlačenja promjena koje utječu na API-je generiranog klijenta.
Držite uvoz u izvršnom okruženju usklađenim s konfiguriranim izlazom generatora.
Držite verzije prisma i @prisma/client usklađenima kada odabrana verzija Prisme koristi oba paketa.
U CI-ju i produkciji pokrenite generiranje izričito prije izgradnje/pokretanja kada bi predmemoriranje ovisnosti moglo preskočiti taj korak.
U monorepima generirajte u radnom prostoru koji posjeduje shemu i izložite klijent kroz stabilnu granicu paketa.
Ponovno pokrenite dugotrajne razvojne procese nakon generiranja prethodno nedostajućeg klijenta.
Za platforme za implementaciju koje predmemoriraju ovisnosti pokrenite prisma generate izričito tijekom instalacije ili izgradnje umjesto da pretpostavljate da je prethodno generirani klijent još uvijek aktualan.
Zaključak
Pouzdano rješenje je kratak lanac dokaza: utvrdite svoj Prisma generator, validirajte predviđenu shemu, generirajte klijent, provjerite stvarnu izlaznu putanju i uskladite svoj uvoz s tim izlazom. Ako se problem pojavljuje samo u CI-ju ili produkciji, premjestite isti korak generiranja u tijek izgradnje. Ako se pojavljuje u monorepu, neka generiranje bude odgovornost paketa koji posjeduje shemu.
Taj je pristup pouzdaniji od opetovanog brisanja ovisnosti jer vam govori koji je sloj bio pogrešan: odabir sheme, generiranje, verzije paketa, razrješavanje uvoza ili pakiranje pri implementaciji.