Saltar al contenido principal
Prisma

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.

Error: PrismaClientInitializationError: Prisma Client did not initialize yet

¿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.

PrismaErrorNode.js

¿Quieres que una IA te ayude? Genera el prompt perfecto para tu error:

Generador de Prompts

¿Necesitas desarrollo a medida?

Apps web, IA, módulos ERP — cuéntame tu proyecto.