Domů
» Základní znalosti
»
Jak opravit chybu „Prisma Client Has Not Been Generated Yet“
Jak opravit chybu „Prisma Client Has Not Been Generated Yet“
Pokud vaše aplikace spadne s chybou Prisma Client has not been generated yet, nejrychlejší užitečnou reakcí není všechno smazat a naslepo přeinstalovat. Nejprve zjistěte, který generátor Prisma Client váš projekt používá, vygenerujte klienta ze správného schématu a ujistěte se, že vaše aplikace importuje z umístění, které bylo skutečně vygenerováno.
Existuje důležitý zdroj zmatení související s verzemi. Podle kontroly v září 2026 používá dokumentace Prisma 7 generátor prisma-client s povinným výstupním adresářem output a kód aplikace importuje Prisma Client z této vygenerované cesty. Starší a stále běžné projekty používají prisma-client-js, kde je @prisma/client běžným importem a vygenerované soubory specifické pro projekt tradičně žily v node_modules/.prisma/client. Smíchání těchto dvou sad pokynů může vést k tomu, že máte vygenerovaného klienta na jednom místě a kód aplikace importuje jiný. Oficiální průvodce generováním Prisma Client dokumentuje aktuální chování Prisma 7.
Rychlá diagnostika: co chyba obvykle znamená
Co pozorujete
Nejužitečnější kontrola
Další krok
Chyba se objeví okamžitě při importu nebo vytváření PrismaClient
Byl klient vygenerován pro tento checkout a schéma?
Spusťte npx prisma generate ze správného balíčku.
prisma generate uspěje, ale aplikace stále vyhazuje chybu
Odpovídá váš import výstupu generátoru?
Prohlédněte blok generátoru a vygenerovaný adresář, poté opravte import.
Funguje lokálně, ale selhává v CI nebo produkci
Spouští sestavení generování poté, co jsou dostupné závislosti a soubory schématu?
Přidejte explicitní krok generování do instalace nebo sestavení.
Aplikace v monorepu nedokáže vyřešit klienta
Který workspace vlastní schema.prisma a vygenerovaný kód?
Generujte v tomto workspace a konzistentně jej exportujte/importujte.
Samotné generování selhává
Je schéma platné a čte Prisma zamýšlené schéma?
Spusťte npx prisma validate a nejprve opravte chyby validace nebo cest.
1. Přečtěte si selhání, než změníte závislosti
Potvrzená část je jednoduchá: Prisma Client je vygenerovaný kód přizpůsobený vašemu schématu. Pokud runtime importuje vstupní bod klienta, jehož vygenerovaná implementace chybí, je zastaralá nebo není tam, kde ji import očekává, může spuštění selhat ještě před prvním databázovým dotazem.
Co však tato zpráva sama o sobě neprokazuje, je, že vaše databáze je nedostupná, přihlašovací údaje jsou špatné nebo migrace selhaly. Tyto stavy mohou způsobit jiné chyby Prisma, ale tato konkrétní zpráva vás nejprve nasměruje ke generování a rozlišení modulů.
Akce: poznamenejte si přesný balíček, soubor a cestu importu v trasování zásobníku. Poté zkontrolujte blok generátoru ve schématu, než cokoli přeinstalujete.
Příklad chyby při spuštění aplikace. Berte ji nejprve jako problém generování klienta nebo cesty importu, nikoli jako důkaz výpadku databáze.
2. Určete svůj generátor a očekávanou cestu importu
Otevřete prisma/schema.prisma nebo cestu ke schématu nakonfigurovanou pro váš projekt. Generátor určuje, kde je Prisma Client vytvořen a jak jej máte importovat.
S tímto vzorem importujte z výstupu, který jste nakonfigurovali, například:
import { PrismaClient } from "../generated/prisma/client";
Aktuální dokumentace Prisma uvádí, že output je povinný pro generátor prisma-client v Prisma 7 a že importy pocházejí z tohoto vygenerovaného umístění.
V tomto starším uspořádání kód aplikace běžně používá:
import { PrismaClient } from "@prisma/client";
Akce: neměňte import jen proto, že tutoriál používá jiný generátor. Sladťte import s vlastním schématem a verzí.
Příklad schématu prisma-client-js ve starším stylu. V projektech Prisma 7 používajících novější generátor prisma-client definujte explicitní výstupní cestu a importujte z tohoto vygenerovaného umístění.
3. Ověřte schéma a poté vygenerujte klienta
Před generováním ověřte schéma. Prisma poskytuje prisma validate speciálně pro kontrolu syntaxe a konfigurace schématu. Oficiální reference prisma validate také podporuje --schema pro nestandardní umístění schématu.
Oficiální reference příkazu generate vysvětluje, že Prisma prozkoumá schéma a zapíše vygenerované artefakty do výstupu nakonfigurovaného generátorem.
Akce: přečtěte si konečný výstup z prisma generate. Nepředpokládejte, kam byly soubory zapsány; použijte cestu, kterou Prisma hlásí.
Spusťte prisma generate z balíčku, který vlastní schéma, a poté pečlivě přečtěte výstupní řádek, abyste zjistili, kam byl klient zapsán.
4. Ověřte, že výstup existuje tam, kde jej váš kód očekává
Úspěšný příkaz je nezbytný, ale runtime musí vidět stejné soubory. To je obzvláště důležité, když nástroje sestavení kopírují jen část repozitáře, když fáze Dockeru vynechá vygenerovaný výstup nebo když monorepo sestaví jeden balíček, aniž by nejprve sestavilo databázový balíček.
Pro prisma-client prohlédněte vlastní výstupní adresář output ze schématu. Pro prisma-client-js prohlédněte uspořádání nainstalovaného/vygenerovaného balíčku Prisma používané vaší verzí. Nepovažujte složku zobrazenou ve starším příkladu za univerzální.
Akce: porovnejte tři věci vedle sebe: output generátoru, cestu hlášenou příkazem prisma generate a příkaz importu v souboru, který selhává. Měly by popisovat stejného vygenerovaného klienta.
V projektech se starším prisma-client-js obvykle žijí vygenerované soubory pod node_modules. Novější projekty prisma-client používají vlastní výstupní adresář nakonfigurovaný v schema.prisma.
5. Opravte import místo nekonečného regenerování
Pokud prisma generate pokaždé uspěje, ale stejná chyba za běhu přetrvává, opakované spouštění pravděpodobně nepomůže. Další otázkou je, zda vaše aplikace importuje vygenerovaný modul, který jste právě vytvořili.
Pro generátor prisma-client v Prisma 7 aktuální dokumentace ukazuje importy z vlastní vygenerované cesty. Pro projekt prisma-client-js je @prisma/client očekávaným importem balíčku. Tento rozdíl je jedním z nejčastějších důvodů, proč si aktuální a starší příklady zdánlivě odporují.
Akce: prohledejte svůj repozitář a najděte každý import PrismaClient. Při migraci nebo v monorepu může být jeden balíček aktualizován, zatímco jiný stále importuje starou cestu.
Import musí odpovídat generátoru, který skutečně používáte: @prisma/client pro starší nastavení prisma-client-js, nebo vaší nakonfigurované vygenerované výstupní cestě pro generátor prisma-client v Prisma 7.
6. Zkontrolujte verze balíčků Prisma, když byl projekt upgradován
Nesoulad verzí je příčinou závislou na okolnostech, nikoli něčím, co tato chyba sama o sobě prokazuje. Průvodci upgradem Prisma však vývojářům nařizují aktualizovat jak balíček CLI prisma, tak @prisma/client při přechodu na hlavní verze. Oficiální průvodce upgradem na Prisma 7 ukazuje oba balíčky upgradované společně.
Zkontrolujte, co je skutečně nainstalováno:
npm ls prisma @prisma/client
U pnpm nebo Yarn použijte ekvivalentní příkaz pro výpis v workspace, který vlastní Prisma. Pokud projekt záměrně zůstává na Prisma 6 nebo jiné podporované verzi, neupgradujte jen kvůli odstranění této zprávy. Slaďte balíčky s verzí, kterou váš projekt očekává, a poté znovu vygenerujte.
Akce: pokud se verze po sloučení nebo aktualizaci závislostí staly nekonzistentními, obnovte zamýšlené odpovídající verze a znovu spusťte prisma generate.
7. Začleňte generování do instalace nebo sestavení
Když aplikace funguje na vývojářském počítači, ale selhává po nasazení, chybějící krok je často v pipeline sestavení, nikoli v kódu aplikace. Dokumentace Prisma pro řešení problémů s Next.js konkrétně doporučuje generovat Prisma Client při každém nasazení, když ukládání závislostí do mezipaměti může zabránit tomu, aby se generování při instalaci spustilo podle očekávání.
Akce: prohlédněte protokoly CI a potvrďte, že prisma generate proběhl poté, co bylo dostupné správné schéma a závislosti, a před sestavením nebo spuštěním serveru.
Přidání explicitního kroku generování do skriptů balíčku činí lokální sestavení a chování CI předvídatelnějšími. Udržujte přesný příkaz konzistentní se svým správcem balíčků a uspořádáním projektu.
8. Po generování restartujte proces
Vývojové servery, testovací běžce a pracovní procesy mohou udržovat moduly načtené v paměti. Vygenerování souborů na disk nezaručuje, že proces, který již selhal při importu, je automaticky znovu načte.
Akce: po úspěšném generování zastavte a restartujte vývojový server, pracovní proces nebo testovací proces. Pokud aplikace nyní postoupí k jiné chybě databáze nebo konfigurace, je to užitečný důkaz, že problém s generováním klienta je vyřešen.
Po generování restartujte proces, aby runtime znovu načetl vygenerovaný modul místo toho, aby udržoval selhaný nebo zastaralý import v paměti.
Monorepa: generujte v balíčku, který vlastní schéma
Ve workspace není spuštění npx prisma generate z kořene repozitáře automaticky ekvivalentní generování uvnitř databázového balíčku. Vyhledávání schématu, konfigurační soubory, závislosti a relativní výstupní cesty se mohou v jednotlivých balíčcích lišit.
Oficiální průvodce Prisma pro pnpm workspaces ukazuje vyhrazený databázový balíček s vlastním schématem, vygenerovaným klientem, pomocnými skripty a exporty pro spotřebitelské aplikace.
Generujte z packages/database, exportujte klienta z tohoto balíčku a nechte aplikace záviset na balíčku, místo aby sahly do soukromého vygenerovaného adresáře jiného workspace.
Akce: udělejte úlohu sestavení nebo generování databázového balíčku explicitní závislostí každé aplikace, která jej importuje.
Musíte smazat node_modules?
Ne jako první krok. Smazání node_modules může opravit poškozenou instalaci, ale také může skrýt skutečný problém tím, že přinutí mnoho nesouvisejících balíčků změnit se najednou. Pokud validace schématu uspěje a generování hlásí správný výstup, nejprve ověřte importy, verze balíčků a cesty sestavení.
Čistá přeinstalace se stává rozumnou, když jsou metadata balíčků nekonzistentní, vygenerovaný výstup je po změnách závislostí zjevně zastaralý nebo váš správce balíčků hlásí problémy s instalací.
Akce: před čištěním zachyťte npm ls prisma @prisma/client a výstup prisma generate. Získáte tak důkazy pro srovnání po přeinstalaci.
Co vám tato chyba neříká
Sama o sobě neprokazuje, že vaše databáze je nedostupná. Nejprve opravte generování/rozlišení importu a poté vyhodnoťte jakoukoli zbývající chybu připojení.
Neprokazuje, že chybí migrace. Generování Prisma Client a migrace schématu databáze jsou související pracovní postupy, ale nejsou to stejné operace.
Neznamená, že každý projekt by měl importovat z @prisma/client. To závisí na generátoru a verzi Prisma.
Neznamená, že je vždy nutné přeinstalovat závislosti. Správné prisma generate plus správná cesta importu často stačí.
Kontrolní seznam prevence
Spusťte prisma validate, když se změní schéma nebo konfigurace generátoru.
Spusťte prisma generate po změnách schématu a po stažení změn, které ovlivňují API vygenerovaného klienta.
Udržujte runtime import sladěný s nakonfigurovaným výstupem generátoru.
Udržujte verze prisma a @prisma/client sladěné, když vámi zvolená verze Prisma používá oba balíčky.
V CI a produkci spouštějte generování explicitně před sestavením/spuštěním, když by ukládání závislostí do mezipaměti mohlo tento krok přeskočit.
V monorepech generujte ve workspace, který vlastní schéma, a vystavte klienta prostřednictvím stabilní hranice balíčku.
Po vygenerování dříve chybějícího klienta restartujte dlouho běžící vývojové procesy.
U platforem nasazení, které ukládají závislosti do mezipaměti, spouštějte prisma generate explicitně během instalace nebo sestavení, místo abyste předpokládali, že dříve vygenerovaný klient je stále aktuální.
Shrnutí
Spolehlivá oprava je krátký řetězec důkazů: identifikujte svůj generátor Prisma, ověřte zamýšlené schéma, vygenerujte klienta, ověřte skutečnou výstupní cestu a sladťte svůj import s tímto výstupem. Pokud se problém vyskytuje pouze v CI nebo produkci, přesuňte stejný krok generování do pracovního postupu sestavení. Pokud se vyskytuje v monorepu, udělejte z generování odpovědnost balíčku, který vlastní schéma.
Tento přístup je spolehlivější než opakované mazání závislostí, protože vám říká, která vrstva byla chybná: výběr schématu, generování, verze balíčků, rozlišení importu nebo balení při nasazení.