Node.js + @neondatabase/serverless: supply the ws constructor
Node has no built-in WebSocket, so the serverless driver's Pool and Client fail without neonConfig.webSocketConstructor set. One line, always forgotten.
Node.js + serverless driver: set the WebSocket constructor
The trap
@neondatabase/serverless speaks WebSockets, and Node.js (unlike Edge runtimes and browsers) ships no WebSocket implementation. new Pool({ connectionString }) then pool.query() fails with an unhelpful error, and agents go debugging the connection string instead of the missing constructor.
The rule (from the driver docs)
import { Pool, neonConfig } from '@neondatabase/serverless';
import ws from 'ws';
neonConfig.webSocketConstructor = ws;
const pool = new Pool({ connectionString: process.env.DATABASE_URL });npm install ws(and@types/wsfor TypeScript).- Set
neonConfig.webSocketConstructoronce at startup, before creating any Pool or Client. - Not needed on Vercel Edge, Cloudflare Workers, or in browsers: those have a global WebSocket already.
- Not needed for the
neon()HTTP client: it uses fetch, not WebSockets.
Checklist
- If the driver fails only in Node and works on Edge, this is the cause.
- Keep
wsout of Edge bundles; gate the import to Node runtime code paths.
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.