Kezdőlap
» Alap tudás
»
Hogyan javítsuk ki a „Prisma Client has not been generated yet” hibát
Hogyan javítsuk ki a „Prisma Client has not been generated yet” hibát
Ha az alkalmazás a Prisma Client has not been generated yet hibával omlik össze, a leggyorsabb hasznos válasz nem az, hogy mindent törlünk és vakon újratelepítünk. Először állapítsuk meg, melyik Prisma Client generátort használja a projekt, generáljuk a klienst a helyes sémából, és győződjünk meg arról, hogy az alkalmazás arról a helyről importál, ahová valóban generáltuk.
Van egy fontos, verzióval kapcsolatos zavarforrás. A 2026 szeptemberében ellenőrzött állapot szerint a Prisma 7 dokumentációja a prisma-client generátort használja egy kötelező output könyvtárral, és az alkalmazáskód erről a generált útvonalról importálja a Prisma Clientet. A régebbi és még mindig gyakori projektek a prisma-client-js-t használják, ahol a @prisma/client a szokásos import, és a generált projektspecifikus fájlok hagyományosan a node_modules/.prisma/client alatt találhatók. A két utasításkészlet keverése oda vezethet, hogy a generált kliens az egyik helyen van, az alkalmazáskód pedig egy másik helyről importál. A hivatalos Prisma Client generálási útmutató dokumentálja a jelenlegi Prisma 7 viselkedést.
Gyors diagnózis: mit jelent általában ez a hiba
Amit tapasztal
A leghasznosabb ellenőrzés
Következő lépés
A hiba azonnal jelentkezik a PrismaClient importálásakor vagy példányosításakor
A kliens ehhez a checkout-hoz és sémához lett generálva?
Futtassa a npx prisma generate parancsot a megfelelő csomagból.
A prisma generate sikeres, de az alkalmazás továbbra is dobja a hibát
Az import megfelel a generátor kimenetének?
Vizsgálja meg a generátor blokkját és a generált könyvtárat, majd javítsa az importot.
Helyben működik, de a CI-ben vagy éles környezetben meghiúsul
A build a függőségek és a sémafájlok elérhetővé válása után futtatja a generálást?
Adjon hozzá egy explicit generálási lépést a telepítéshez vagy a buildhez.
A monorepo alkalmazás nem tudja feloldani a klienst
Melyik workspace birtokolja a schema.prisma fájlt és a generált kódot?
Generáljon abban a workspace-ben, és exportálja/importálja következetesen.
Maga a generálás hiúsul meg
Érvényes a séma, és a Prisma a szándékolt sémát olvassa?
Futtassa a npx prisma validate parancsot, először a validációs vagy útvonalhibákat javítva.
1. Olvassa el a hibát, mielőtt a függőségeket módosítaná
A megerősített rész egyszerű: a Prisma Client a sémához igazított generált kód. Ha a futtatókörnyezet egy olyan kliens belépési pontot importál, amelynek generált implementációja hiányzik, elavult, vagy nem ott van, ahol az import várja, az indítás már az első adatbázis-lekérdezés előtt meghiúsulhat.
Amit ez az üzenet önmagában nem bizonyít, az az, hogy az adatbázis nem elérhető, a hitelesítő adatok hibásak, vagy a migrációk meghiúsultak. Ezek a körülmények más Prisma hibákat okozhatnak, de ez a konkrét üzenet először a generálásra és a modulfeloldásra irányítja a figyelmet.
Teendő: jegyezze fel a veremkövetésben szereplő pontos csomagot, fájlt és importútvonalat. Ezután ellenőrizze a séma generátor blokkját, mielőtt bármit újratelepítene.
Példa a hibára az alkalmazás indításakor. Elsőként kliensgenerálási vagy importútvonal-problémaként kezelje, ne az adatbázis-kiesés bizonyítékaként.
2. Azonosítsa a generátort és a várt importútvonalat
Nyissa meg a prisma/schema.prisma fájlt vagy a projekthez beállított sémaútvonalat. A generátor határozza meg, hol jön létre a Prisma Client, és hogyan kell importálni.
Ennél a mintánál a beállított outputból importáljon, például:
import { PrismaClient } from "../generated/prisma/client";
A Prisma jelenlegi dokumentációja kimondja, hogy az output kötelező a Prisma 7 prisma-client generátorához, és hogy az importok erről a generált helyről származnak.
Ebben a régebbi elrendezésben az alkalmazáskód általában ezt használja:
import { PrismaClient } from "@prisma/client";
Teendő: ne változtassa meg az importot csak azért, mert egy útmutató más generátort használ. Az importot a saját sémájához és verziójához igazítsa.
Példa egy örökölt stílusú prisma-client-js sémára. A újabb prisma-client generátort használó Prisma 7 projektekben adjon meg explicit output útvonalat, és arról a generált helyről importáljon.
3. Validálja a sémát, majd generálja a klienst
Generálás előtt validálja a sémát. A Prisma kifejezetten a prisma validate parancsot biztosítja a séma szintaxisának és konfigurációjának ellenőrzésére. A hivatalos prisma validate referencia támogatja a --schema kapcsolót is a nem alapértelmezett sémahelyekhez.
A hivatalos generate parancs referencia elmagyarázza, hogy a Prisma megvizsgálja a sémát, és a generált artefaktumokat a generátor által beállított outputba írja.
Teendő: olvassa el a prisma generate végső kimenetét. Ne feltételezze, hová íródtak a fájlok; használja a Prisma által jelentett útvonalat.
Futtassa a prisma generate parancsot abból a csomagból, amely a sémát birtokolja, majd figyelmesen olvassa el a kimeneti sort, hogy megtudja, hová íródott a kliens.
4. Ellenőrizze, hogy a kimenet ott van-e, ahol a kód várja
A sikeres parancs szükséges, de a futtatókörnyezetnek ugyanazokat a fájlokat kell látnia. Ez különösen akkor fontos, amikor a build eszközök a repositorynak csak egy részét másolják, amikor egy Docker szakasz kihagyja a generált kimenetet, vagy amikor egy monorepo egy csomagot anélkül buildel, hogy előbb az adatbázis csomagot buildelné.
A prisma-client esetében vizsgálja meg a séma egyéni output könyvtárát. A prisma-client-js esetében vizsgálja meg a verziója által használt telepített/generált Prisma csomag elrendezését. Ne tekintse egy régebbi példában látható mappát általános érvényűnek.
Teendő: hasonlítson össze három dolgot egymás mellett: a generátor output értékét, a prisma generate által jelentett útvonalat és az összeomló fájl import utasítását. Ugyanazt a generált klienst kell leírniuk.
Az örökölt prisma-client-js projekteknél a generált fájlok általában a node_modules alatt találhatók. Az újabb prisma-client projektek a schema.prisma fájlban beállított egyéni output könyvtárat használják.
5. Az importot javítsa, ne generáljon örökké újra
Ha a prisma generate minden alkalommal sikeres, de ugyanaz a futásidejű hiba megmarad, az ismételt újrafuttatás valószínűleg nem segít. A következő kérdés az, hogy az alkalmazás importálja-e az éppen létrehozott generált modult.
Egy Prisma 7 prisma-client generátornál a jelenlegi dokumentáció az egyéni generált útvonalról történő importokat mutatja. Egy prisma-client-js projektnél a @prisma/client a várt csomagimport. Ez a különbség az egyik leggyakoribb oka annak, hogy a jelenlegi és a régebbi példák ellentmondani látszanak egymásnak.
Teendő: keresse meg a repositoryban az összes PrismaClient importot. Egy migráció vagy monorepo esetén az egyik csomag frissülhet, míg egy másik még a régi útvonalat importálja.
Az importnak meg kell egyeznie a ténylegesen használt generátorral: @prisma/client az örökölt prisma-client-js beállításokhoz, vagy a beállított generált output útvonal a Prisma 7 prisma-client generátorhoz.
6. Ellenőrizze a Prisma csomagverziókat, amikor a projektet frissítették
A verzióeltérés egy körülményfüggő ok, nem valami, amit ez a hiba önmagában bizonyít. A Prisma frissítési útmutatói azonban arra utasítják a fejlesztőket, hogy főverzióváltáskor mind a prisma CLI csomagot, mind a @prisma/client csomagot frissítsék. A hivatalos Prisma 7 frissítési útmutató mindkét csomag együttes frissítését mutatja.
Ellenőrizze, mi van ténylegesen telepítve:
npm ls prisma @prisma/client
pnpm vagy Yarn esetén használja az egyenértékű listázó parancsot arra a workspace-re, amely a Prismát birtokolja. Ha a projekt szándékosan a Prisma 6-on vagy egy másik támogatott verzión marad, ne frissítsen csupán az üzenet eltüntetése érdekében. Igazítsa a csomagokat ahhoz a verzióhoz, amelyet a projekt elvár, majd generáljon újra.
Teendő: ha a verziók egy merge vagy függőségfrissítés után inkonzisztensek lettek, állítsa vissza a szándékolt egyező verziókat, és futtassa újra a prisma generate parancsot.
7. Tegye a generálást a telepítés vagy a build részévé
Amikor egy alkalmazás működik a fejlesztői gépen, de a telepítés után meghiúsul, a hiányzó lépés gyakran a build folyamatban van, nem az alkalmazáskódban. A Prisma Next.js hibaelhárítási dokumentációja kifejezetten azt javasolja, hogy minden telepítésnél generálják a Prisma Clientet, amikor a függőségek gyorsítótárazása megakadályozhatja a telepítéskori generálás várt módon történő lefutását.
Általában egy megbízható generálási pontra van szükség, nem minden lehetséges hookra. Válassza azt a hookot, amelyet a telepítési platform ténylegesen végrehajt. A gyorsítótárazással kapcsolatos esethez lásd a Prisma hivatalos Next.js telepítési hibaelhárítási oldalát.
Teendő: vizsgálja meg a CI naplókat, és erősítse meg, hogy a prisma generate a megfelelő séma és függőségek elérhetővé válása után, valamint a bundolás vagy a szerver indítása előtt lefutott.
Egy explicit generálási lépés hozzáadása a package scriptekhez kiszámíthatóbbá teszi a helyi buildeket és a CI viselkedését. Tartsa a pontos parancsot összhangban a csomagkezelőjével és a projekt elrendezésével.
8. Indítsa újra a folyamatot a generálás után
A fejlesztői szerverek, tesztfuttatók és worker folyamatok a memóriában tarthatják a betöltött modulokat. A fájlok lemezre generálása nem garantálja, hogy egy már sikertelen importot elszenvedett folyamat automatikusan újratölti azokat.
Teendő: a sikeres generálás után állítsa le és indítsa újra a fejlesztői szervert, a workert vagy a tesztfolyamatot. Ha az alkalmazás most egy másik adatbázis- vagy konfigurációs hibáig jut el, az hasznos bizonyíték arra, hogy maga a kliensgenerálási probléma megoldódott.
A generálás után indítsa újra a folyamatot, hogy a futtatókörnyezet újratöltse a generált modult, ahelyett hogy egy sikertelen vagy elavult importot tartana a memóriában.
Monorepók: abban a csomagban generáljon, amely a sémát birtokolja
Egy workspace-ben a npx prisma generate futtatása a repository gyökeréből nem automatikusan egyenértékű az adatbázis csomagon belüli generálással. A sémafelderítés, a konfigurációs fájlok, a függőségek és a relatív output útvonalak mind csomagonként eltérhetnek.
A Prisma hivatalos pnpm workspaces útmutatója egy dedikált adatbázis csomagot mutat be saját sémával, generált klienssel, segítő scriptekkel és exportokkal a fogyasztó alkalmazások számára.
Generáljon a packages/database csomagból, exportálja a klienst abból a csomagból, és az alkalmazások függjenek a csomagtól ahelyett, hogy egy másik workspace privát generált könyvtárába nyúlnának.
Teendő: tegye az adatbázis csomag build vagy generate feladatát minden őt importáló alkalmazás explicit függőségévé.
Törölni kell a node_modules-t?
Nem első lépésként. A node_modules törlése kijavíthat egy sérült telepítést, de el is rejtheti a valódi problémát azáltal, hogy sok nem kapcsolódó csomagot egyszerre kényszerít megváltozni. Ha a séma validálása sikeres, és a generálás a helyes outputot jelenti, először ellenőrizze az importokat, a csomagverziókat és a build útvonalakat.
A tiszta újratelepítés akkor válik ésszerűvé, amikor a csomag metaadatai inkonzisztensek, a generált output egyértelműen elavult a függőségváltozások után, vagy a csomagkezelő telepítési problémákat jelent.
Teendő: a tisztítás előtt rögzítse a npm ls prisma @prisma/client és a prisma generate kimenetét. Ez bizonyítékot ad az újratelepítés utáni összehasonlításhoz.
Amit ez a hiba nem mond el
Önmagában nem bizonyítja, hogy az adatbázis elérhetetlen. Először a generálást/importfeloldást javítsa, majd értékelje a megmaradó kapcsolódási hibát.
Nem bizonyítja, hogy hiányoznak a migrációk. A Prisma Client generálása és az adatbázisséma migrációja összefüggő munkafolyamatok, de nem ugyanaz a művelet.
Nem jelenti azt, hogy minden projektnek a @prisma/client-ből kell importálnia. Ez a generátortól és a Prisma verziójától függ.
Nem jelenti azt, hogy mindig újra kell telepíteni a függőségeket. Egy helyes prisma generate és a helyes importútvonal gyakran elegendő.
Megelőzési ellenőrzőlista
Futtassa a prisma validate parancsot, amikor a séma vagy a generátor konfigurációja megváltozik.
Futtassa a prisma generate parancsot a séma változásai után és azon változások lehúzása után, amelyek a generált kliens API-kat érintik.
Tartsa a futásidejű importot összhangban a beállított generátor outputtal.
Tartsa a prisma és a @prisma/client verziókat összhangban, amikor a választott Prisma verzió mindkét csomagot használja.
A CI-ben és éles környezetben futtassa a generálást explicit módon a build/start előtt, amikor a függőségek gyorsítótárazása kihagyhatná azt.
Monorepókban abban a workspace-ben generáljon, amely a sémát birtokolja, és stabil csomaghatáron keresztül tegye elérhetővé a klienst.
Indítsa újra a hosszú ideig futó fejlesztői folyamatokat egy korábban hiányzó kliens generálása után.
Azon telepítési platformoknál, amelyek gyorsítótárazzák a függőségeket, futtassa a prisma generate parancsot explicit módon a telepítés vagy a build során, ahelyett hogy feltételezné, hogy egy korábbi generált kliens még mindig aktuális.
Lényeg
A megbízható javítás egy rövid bizonyítéklánc: azonosítsa a Prisma generátorát, validálja a szándékolt sémát, generálja a klienst, ellenőrizze a tényleges output útvonalat, és igazítsa az importot ehhez az outputhoz. Ha a probléma csak a CI-ben vagy éles környezetben jelentkezik, vigye ugyanezt a generálási lépést a build munkafolyamatba. Ha monorepóban jelentkezik, tegye a generálást a sémát birtokló csomag felelősségévé.
Ez a megközelítés megbízhatóbb, mint a függőségek ismételt törlése, mert megmondja, melyik réteg volt hibás: a séma kiválasztása, a generálás, a csomagverziók, az importfeloldás vagy a telepítési csomagolás.