drizzle-team / drizzle-team/drizzle-orm

[BUG]: vercel-postgres/migrator not using environment variables in NextJS

Open
#4,019 2 comments 0 reactions 0 assignees View on GitHub
bug db/postgres driver/vercel-pg
Dominant language
TypeScript
Stars
35.8k
Forks
1.6k
Avg merge
2d 7h
Merged PRs (30d)
4

Description

### Report hasn't been filed before.

- [x] I have verified that the bug I'm about to report hasn't been filed before.

### What version of `drizzle-orm` are you using?

0.38.4

### What version of `drizzle-kit` are you using?

0.30.2

### Other packages

_No response_

### Describe the Bug

### Description

When using the latest version of drizzle-orm/vercel-postgres/migrator in a NextJs 15 project (with Supabase), the migrator function doesn't appear to be pulling environemnt variables.

The stack trace looks like it's trying to connect to `wss://127.0.0.1/v2` which is not what is specified in the neon config, nor by the environment variables used

Stack trace:

```
Migration started
Migration failed
ErrorEvent {
[Symbol(kTarget)]: WebSocket {
_events: [Object: null prototype] {
error: [Function],
message: [Function],
close: [Function],
open: [Function]
},
_eventsCount: 4,
_maxListeners: undefined,
_binaryType: 'arraybuffer',
_closeCode: 1006,
_closeFrameReceived: false,
_closeFrameSent: false,
_closeMessage: ,
_closeTimer: null,
_errorEmitted: true,
_extensions: {},
_paused: false,
_protocol: '',
_readyState: 3,
_receiver: null,
_sender: null,
_socket: null,
_bufferedAmount: 0,
_isServer: false,
_redirects: 0,
_autoPong: true,
_url: 'wss://127.0.0.1/v2',
_req: null,
[Symbol(shapeMode)]: false,
[Symbol(kCapture)]: false
},
[Symbol(kType)]: 'error',
[Symbol(kError)]: Error: connect ECONNREFUSED 127.0.0.1:443
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16) {
errno: -61,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 443
},
[Symbol(kMessage)]: 'connect ECONNREFUSED 127.0.0.1:443'
}
```

Files for context:

```ts
// envconfig.ts
import { loadEnvConfig } from '@next/env';

const projectDir = process.cwd();
loadEnvConfig(projectDir);
```

```ts
// migrate.ts
import './envConfig'
import { sql } from '@vercel/postgres'
import { drizzle } from "drizzle-orm/vercel-postgres";
import { migrate } from "drizzle-orm/vercel-postgres/migrator";
import { neonConfig } from '@neondatabase/serverless'

async function runMigrations() {
console.log('Migration started');

// Required by Supabase local development environment
if (!process.env.VERCEL_ENV) {
neonConfig.useSecureWebSocket = false
neonConfig.pipelineTLS = false
neonConfig.pipelineConnect = false

neonConfig.wsProxy = (host) => `${host}:54321/pooler/v2/`;
}

// I have verified the database connects successfully
const db = drizzle(sql)

// This command fails
await migrate(db, { migrationsFolder: './database/migrations' });

console.log('Migration completed');

process.exit(0);
}

runMigrations().catch((error) => {
console.error('Migration failed');
console.log(error);
process.exit(1);
});
```

```ts
// drizzle.config.ts
import '@/database/envConfig';
import type { Config } from 'drizzle-kit';

export default {
schema: './database/schema.ts',
out: './database/migrations',
dialect: 'postgresql',
dbCredentials: {
host: process.env.DB_HOST as string,
user: process.env.DB_USER as string,
port: Number(process.env.DB_PORT),
password: process.env.DB_PASSWORD as string,
database: process.env.DB_NAME as string,
},
verbose: true,
strict: true,
} satisfies Config;
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.