TL;DR: # Prisma + Neon: use the official adapter ## The trap Older tutorials wire Prisma to Neon by installing `@neondatabase/serverless` and

## Fix
1. # Prisma + Neon: use the official adapter ## The trap Older tutorials wire Prisma to Neon by installing.
   Expected: the request routes instead of erroring.
2. Agents following stale training data still do this, and then fight version mismatches between the driver, the ws package, and Prisma. ## The rule Neon's current Prisma guide says it plainly: do not install.
   Expected: this specific failure stops.
3. ```sh
npm install @prisma/client @prisma/adapter-neon dotenv
```.
   Expected: this specific failure stops.

## Details
`@neondatabase/serverless` and `ws` and hand-rolling a driver adapter. That was before `@prisma/adapter-neon` existed. `@neondatabase/serverless` or `ws` as separate packages. The `@prisma/adapter-neon` package bundles everything needed. ```ts
import { PrismaClient } from './generated/prisma';
import { PrismaNeon } from '@prisma/adapter-neon';
const adapter = new PrismaNeon({ connectionString: process.env.DATABASE_URL });
export const prisma = new PrismaClient({ adapter });
``` ## Checklist - One adapter package, no manual ws wiring. - Pooled `DATABASE_URL` into the adapter (app traffic), direct string for the CLI. - If a tutorial tells you to `neonConfig.webSocketConstructor = ws` , it predates the adapter; follow the current guide instead.

## When to use
You hit exactly this: Prisma + Neon: use @prisma/adapter-neon, do not hand-roll the driver in Prisma + Neon.

## When not to use
A different error, or the same symptom in a different tool. This page only covers the failure above.

## Compatibility
Prisma + Neon.