Solución: Prisma Client did not initialize yet (PrismaClientInitializationError)
Prisma lanza PrismaClientInitializationError al no encontrar el cliente generado. Solución: ejecutar prisma generate y configurar la instancia correctamente en Next.js.
¿Por qué ocurre?
Prisma Client no está generado o está desactualizado respecto al schema. Ocurre cuando: no has ejecutado 'prisma generate' después de instalar o cambiar el schema, en Next.js se crean múltiples instancias de PrismaClient en desarrollo (hot reload), o el directorio de salida del cliente no coincide con el que se importa.
Solución paso a paso
Paso 1 — Genera el cliente:
npx prisma generate
Si cambias el schema.prisma, siempre ejecuta esto después.
Paso 2 — En Next.js, crea una instancia singleton:
// lib/prisma.ts
import { PrismaClient } from '@prisma/client';const globalForPrisma = global as unknown as { prisma: PrismaClient };
export const prisma =
globalForPrisma.prisma ??
new PrismaClient({
log: process.env.NODE_ENV === 'development' ? ['query', 'error', 'warn'] : ['error'],
});
if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;
Importa siempre desde este archivo, no crees new PrismaClient() en cada archivo:
// ✅ Bien
import { prisma } from '@/lib/prisma';// ❌ Mal — crea una nueva instancia en cada hot reload
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
Paso 3 — Verifica la DATABASE_URL:
# .env
DATABASE_URL="postgresql://usuario:contraseña@localhost:5432/midb"
# Prueba la conexión
npx prisma db pull
Si usas output personalizado en schema.prisma:
generator client {
provider = "prisma-client-js"
output = "../generated/prisma" // ← debes importar desde aquí
}
// Importa desde el output personalizado
import { PrismaClient } from '../generated/prisma';
Cómo evitarlo en el futuro
Añade 'prisma generate' como postinstall en package.json para que se ejecute automáticamente: { 'scripts': { 'postinstall': 'prisma generate' } }. En Next.js, usa siempre el patrón singleton para PrismaClient. Nunca instancies PrismaClient fuera del singleton en entornos con hot reload.
¿Quieres que una IA te ayude? Genera el prompt perfecto para tu error:
Generador de Prompts