Etusivu
» Perustieto
»
Kuinka korjata "Prisma Client has not been generated yet" -virhe
Kuinka korjata "Prisma Client has not been generated yet" -virhe
Jos sovelluksesi kaatuu virheeseen Prisma Client has not been generated yet, nopein hyödyllinen toimenpide ei ole poistaa kaikkea ja asentaa uudelleen sokkona. Selvitä ensin, mitä Prisma Client -generaattoria projektisi käyttää, luo client oikeasta skeemasta ja varmista, että sovelluksesi importtaa sijainnista, joka todella luotiin.
On olemassa tärkeä versioihin liittyvä sekaannuksen lähde. Syyskuussa 2026 tarkistetun tiedon mukaan Prisma 7:n dokumentaatio käyttää prisma-client-generaattoria, jossa vaaditaan output-hakemisto, ja sovelluskoodi importtaa Prisma Clientin tästä luodusta polusta. Vanhemmat ja edelleen yleiset projektit käyttävät prisma-client-js-generaattoria, jossa @prisma/client on normaali import ja projektikohtaiset luodut tiedostot ovat perinteisesti sijainneet hakemistossa node_modules/.prisma/client. Näiden kahden ohjeistuksen sekoittaminen voi jättää sinut tilanteeseen, jossa client on luotu yhteen paikkaan ja sovelluskoodi importtaa toisesta. Virallinen Prisma Clientin luontiopas dokumentoi nykyisen Prisma 7 -käyttäytymisen.
Nopea diagnoosi: mitä virhe yleensä tarkoittaa
Mitä havaitset
Hyödyllisin tarkistus
Seuraava toimenpide
Virhe ilmenee heti, kun PrismaClient importataan tai konstruoidaan
Luotiinko client tälle työkopiolle ja skeemalle?
Suorita npx prisma generate oikeasta paketista.
prisma generate onnistuu, mutta sovellus heittää edelleen virheen
Vastaako importtisi generaattorin tulostetta?
Tarkista generaattorilohko ja luotu hakemisto ja korjaa sitten import.
Toimii paikallisesti mutta epäonnistuu CI:ssä tai tuotannossa
Suorittaako build luonnin sen jälkeen, kun riippuvuudet ja skeematiedostot ovat saatavilla?
Lisää eksplisiittinen luontivaihe asennukseen tai buildiin.
Monorepo-sovellus ei pysty ratkaisemaan clientiä
Mikä workspace omistaa schema.prisma-tiedoston ja luodun koodin?
Luo kyseisessä workspacessa ja vie/importtaa se johdonmukaisesti.
Itse luonti epäonnistuu
Onko skeema kelvollinen ja lukeeko Prisma aiottua skeemaa?
Suorita npx prisma validate ja korjaa ensin validointi- tai polkuvirheet.
1. Lue virhe ennen kuin muutat riippuvuuksia
Vahvistettu osa on yksinkertainen: Prisma Client on luotua koodia, joka on räätälöity skeemaasi. Jos ajonaikainen ympäristö importtaa clientin aloituspisteen, jonka luotua toteutusta ei ole, joka on vanhentunut tai joka ei ole siellä missä import odottaa, käynnistys voi epäonnistua ennen kuin ensimmäinen tietokantakysely ehtii suorittua.
Se, mitä tämä viesti ei yksinään todista, on että tietokantasi olisi alhaalla, tunnuksesi väärin tai migraatiosi epäonnistuneet. Nämä tilanteet voivat aiheuttaa muita Prisma-virheitä, mutta tämä nimenomainen viesti ohjaa sinut ensisijaisesti luontiin ja moduulien ratkaisuun.
Toimenpide: kirjaa ylös tarkka paketti, tiedosto ja importpolku pinon jäljityksestä. Tarkista sitten skeeman generaattorilohko ennen kuin asennat mitään uudelleen.
Esimerkki virheestä sovelluksen käynnistyksessä. Käsittele sitä ensisijaisesti clientin luonti- tai importpolkuongelmana, ei todisteena tietokantakatkoksesta.
2. Tunnista generaattorisi ja odotettu importpolku
Avaa prisma/schema.prisma tai projektillesi määritetty skeemapolku. Generaattori määrittää, minne Prisma Client luodaan ja miten se tulee importata.
Tässä mallissa import tehdään määrittämästäsi tulosteesta, esimerkiksi:
import { PrismaClient } from "../generated/prisma/client";
Prisman nykyinen dokumentaatio toteaa, että output on pakollinen Prisma 7:n prisma-client-generaattorille ja että importit tulevat tästä luodusta sijainnista.
Tässä vanhemmassa asettelussa sovelluskoodi käyttää yleisesti:
import { PrismaClient } from "@prisma/client";
Toimenpide: älä muuta importtia vain siksi, että jokin opas käyttää eri generaattoria. Sovita import omaan skeemaasi ja versioosi.
Esimerkki vanhan tyylin prisma-client-js-skeemasta. Prisma 7 -projekteissa, jotka käyttävät uudempaa prisma-client-generaattoria, määritä eksplisiittinen tulostepolku ja importtaa tästä luodusta sijainnista.
3. Validoi skeema ja luo sitten client
Ennen luontia validoi skeema. Prisma tarjoaa prisma validate -komennon nimenomaan skeeman syntaksin ja konfiguraation tarkistamiseen. Virallinen prisma validate -viite tukee myös --schema-valitsinta ei-oletusskeemasijainneille.
Virallinen generate-komennon viite selittää, että Prisma tutkii skeeman ja kirjoittaa luodut artefaktit generaattorin määrittämään tulosteeseen.
Toimenpide: lue prisma generate -komennon lopullinen tuloste. Älä oleta, minne tiedostot kirjoitettiin; käytä polkua, jonka Prisma raportoi.
Suorita prisma generate paketista, joka omistaa skeeman, ja lue tulosterivi huolellisesti selvittääksesi, minne client kirjoitettiin.
4. Varmista, että tuloste on siellä missä koodisi odottaa sitä
Onnistunut komento on välttämätön, mutta myös ajonaikaisen ympäristön on nähtävä samat tiedostot. Tämä korostuu erityisesti, kun build-työkalut kopioivat vain osan repositoriosta, kun Docker-vaihe jättää luodun tulosteen pois tai kun monorepo buildaa yhden paketin rakentamatta ensin tietokantapakettia.
prisma-client-generaattorin kohdalla tarkista skeemassa määritetty mukautettu output-hakemisto. prisma-client-js-generaattorin kohdalla tarkista versionsi käyttämä asennettu/luotu Prisma-paketin rakenne. Älä pidä vanhemmassa esimerkissä näkyvää kansiota yleispätevänä.
Toimenpide: vertaa kolmea asiaa rinnakkain: generaattorin output-arvoa, prisma generate -komennon raportoimaa polkua ja kaatuvan tiedoston import-lausetta. Niiden tulisi kuvata samaa luotua clientiä.
Vanhoissa prisma-client-js-projekteissa luodut tiedostot sijaitsevat yleisesti node_modules-hakemiston alla. Uudemmat prisma-client-projektit käyttävät schema.prisma-tiedostossa määritettyä mukautettua tulostehakemistoa.
5. Korjaa import sen sijaan, että luot clientiä loputtomiin uudelleen
Jos prisma generate onnistuu joka kerta, mutta sama ajonaikainen virhe toistuu, sen toistuva uudelleensuorittaminen ei todennäköisesti auta. Seuraava kysymys on, importtaako sovelluksesi juuri luomasi generoidun moduulin.
Prisma 7:n prisma-client-generaattorille nykyinen dokumentaatio näyttää importit mukautetusta luodusta polusta. prisma-client-js-projektissa @prisma/client on odotettu paketti-import. Tämä ero on yksi yleisimmistä syistä, joiden vuoksi nykyiset ja vanhemmat esimerkit näyttävät olevan ristiriidassa keskenään.
Toimenpide: etsi repositoriostasi kaikki PrismaClient-importit. Migraatiossa tai monorepossa yksi paketti voi olla päivitetty, kun taas toinen importtaa edelleen vanhaa polkua.
Importin on vastattava generaattoria, jota todella käytät: @prisma/client vanhoissa prisma-client-js-asetuksissa tai määrittämäsi luotu tulostepolku Prisma 7:n prisma-client-generaattorille.
6. Tarkista Prisma-pakettien versiot, kun projekti on päivitetty
Versioiden yhteensopimattomuus on tilanteesta riippuva syy, ei jotain, minkä tämä virhe yksinään todistaisi. Prisman päivitysoppaat kuitenkin kehottavat kehittäjiä päivittämään sekä prisma-CLI-paketin että @prisma/client-paketin siirryttäessä pääversioiden välillä. Virallinen Prisma 7 -päivitysopas näyttää molempien pakettien päivittämisen yhdessä.
Tarkista, mitä on todella asennettu:
npm ls prisma @prisma/client
Käytä pnpm:n tai Yarnin kanssa vastaavaa listauskomentoa sille workspacelle, joka omistaa Prisman. Jos projekti pysyy tarkoituksella Prisma 6:ssa tai muussa tuetussa versiossa, älä päivitä pelkästään tämän viestin poistamiseksi. Kohdista paketit projektisi odottamaan versioon ja luo client uudelleen.
Toimenpide: jos versiot ovat muuttuneet epäjohdonmukaisiksi yhdistämisen tai riippuvuuspäivityksen jälkeen, palauta aiottu vastaavuus ja suorita prisma generate uudelleen.
7. Tee luonnista osa asennusta tai buildia
Kun sovellus toimii kehittäjän koneella mutta epäonnistuu käyttöönoton jälkeen, puuttuva vaihe on usein build-putkessa eikä sovelluskoodissa. Prisman Next.js-vianmääritysdokumentaatio suosittelee nimenomaan Prisma Clientin luomista jokaisessa käyttöönotossa, kun riippuvuuksien välimuisti voi estää asennuksen aikaisen luonnin suorittamisen odotetusti.
Tarvitset yleensä yhden luotettavan luontipisteen, et kaikkia mahdollisia hookeja. Valitse hook, jonka käyttöönottoalustasi todella suorittaa. Katso Prisman virallinen Next.js-käyttöönoton vianmäärityssivu välimuistiin liittyvää tapausta varten.
Toimenpide: tarkista CI-lokit ja varmista, että prisma generate suoritettiin sen jälkeen, kun oikea skeema ja riippuvuudet olivat saatavilla, ja ennen bundlausta tai palvelimen käynnistystä.
Eksplisiittisen luontivaiheen lisääminen package-skripteihin tekee paikallisista buildeista ja CI-käyttäytymisestä ennustettavampaa. Pidä tarkka komento yhdenmukaisena paketinhallintasi ja projektirakenteesi kanssa.
8. Käynnistä prosessi uudelleen luonnin jälkeen
Kehityspalvelimet, testiajajat ja työprosessit voivat pitää moduuleja ladattuna muistiin. Tiedostojen luominen levylle ei takaa, että prosessi, jonka import on jo epäonnistunut, lataisi ne automaattisesti uudelleen.
Toimenpide: pysäytä ja käynnistä kehityspalvelin, työprosessi tai testiprosessi uudelleen onnistuneen luonnin jälkeen. Jos sovellus etenee nyt eri tietokanta- tai konfiguraatiovirheeseen, se on hyödyllinen todiste siitä, että itse clientin luontiongelma on korjattu.
Käynnistä prosessi uudelleen luonnin jälkeen, jotta ajonaikainen ympäristö lataa luodun moduulin sen sijaan, että pitäisi epäonnistuneen tai vanhentuneen importin muistissa.
Monorepot: luo client paketissa, joka omistaa skeeman
Workspacessa npx prisma generate -komennon suorittaminen repositorion juuresta ei automaattisesti vastaa luontia tietokantapaketin sisällä. Skeeman löytäminen, konfiguraatiotiedostot, riippuvuudet ja suhteelliset tulostepolut voivat kaikki vaihdella paketittain.
Prisman virallinen pnpm-workspaces-opas esittelee oman skeeman, luodun clientin, apuskriptit ja vienti-integraatiot kuluttaville sovelluksille sisältävän erillisen tietokantapaketin.
Luo client packages/database-paketista, vie client tästä paketista ja anna sovellusten riippua paketista sen sijaan, että ne kurkottaisivat toisen workspacen yksityiseen luotuun hakemistoon.
Toimenpide: tee tietokantapaketin build- tai generate-tehtävästä eksplisiittinen riippuvuus jokaiselle sovellukselle, joka importtaa sen.
Pitääkö node_modules poistaa?
Ei ensimmäisenä toimenpiteenä. node_modules-hakemiston poistaminen voi korjata vahingoittuneen asennuksen, mutta se voi myös piilottaa todellisen ongelman pakottamalla monet toisiinsa liittymättömät paketit muuttumaan kerralla. Jos skeeman validointi onnistuu ja luonti raportoi oikean tulosteen, tarkista ensin importit, pakettien versiot ja build-polut.
Puhdas uudelleenasennus on järkevää, kun paketin metatiedot ovat epäjohdonmukaisia, luotu tuloste on selvästi vanhentunut riippuvuusmuutosten jälkeen tai paketinhallintasi raportoi asennusongelmista.
Toimenpide: tallenna npm ls prisma @prisma/client -tuloste ja prisma generate -tuloste ennen siivousta. Näin sinulla on todisteet, joihin verrata uudelleenasennuksen jälkeen.
Mitä tämä virhe ei kerro sinulle
Se ei yksinään todista, että tietokantasi olisi tavoittamattomissa. Korjaa ensin luonti/importin ratkaisu ja arvioi sitten mahdollinen jäljelle jäävä yhteysvirhe.
Se ei todista, että migraatiot puuttuisivat. Prisma Clientin luonti ja tietokantaskeeman migraatio ovat toisiinsa liittyviä työnkulkuja, mutta eivät sama toimenpide.
Se ei tarkoita, että jokaisen projektin tulisi importata @prisma/client-paketista. Se riippuu generaattorista ja Prisma-versiosta.
Se ei tarkoita, että riippuvuuksien uudelleenasennus olisi aina tarpeen. Oikea prisma generate ja oikea importpolku riittävät usein.
Ehkäisyn tarkistuslista
Suorita prisma validate, kun skeema tai generaattorin konfiguraatio muuttuu.
Suorita prisma generate skeemamuutosten jälkeen ja sen jälkeen, kun olet vetänyt muutoksia, jotka vaikuttavat luodun clientin API-rajapintoihin.
Pidä ajonaikainen import yhdenmukaisena määritetyn generaattorin tulosteen kanssa.
Pidä prisma- ja @prisma/client -versiot yhdenmukaisina, kun valitsemasi Prisma-versio käyttää molempia paketteja.
Suorita luonti CI:ssä ja tuotannossa eksplisiittisesti ennen buildia/käynnistystä, kun riippuvuuksien välimuisti voisi ohittaa sen.
Luo monorepoissa siinä workspacessa, joka omistaa skeeman, ja tarjoa client vakaan pakettirajan kautta.
Käynnistä pitkäkestoiset kehitysprosessit uudelleen, kun olet luonut aiemmin puuttuneen clientin.
Kun käyttöönottoalustat välimuistittavat riippuvuuksia, suorita prisma generate eksplisiittisesti asennuksen tai buildin aikana sen sijaan, että olettaisit aiemmin luodun clientin olevan edelleen ajan tasalla.
Yhteenveto
Luotettava korjaus on lyhyt todistusketju: tunnista Prisma-generaattorisi, validoi aiottu skeema, luo client, varmista todellinen tulostepolku ja sovita importtisi vastaamaan tätä tulostetta. Jos ongelma ilmenee vain CI:ssä tai tuotannossa, siirrä sama luontivaihe build-työnkulkuun. Jos se ilmenee monorepossa, tee luonnista sen paketin vastuulla, joka omistaa skeeman.
Tämä lähestymistapa on luotettavampi kuin riippuvuuksien toistuva poistaminen, koska se kertoo, mikä kerros oli väärin: skeeman valinta, luonti, pakettien versiot, importin ratkaisu vai käyttöönoton paketointi.