npmpostgresql95% confidence\u2191 12

PrismaClientInitializationError: `PrismaClient` needs to be constructed with a non-empty, valid `PrismaClientOptions`:

Full error message
I created schema.prisma and schema.prisma

schema.prisma:

generator client {
  provider = "prisma-client"
  engineType = "client"
  output   = "./generated/main"
}

datasource db {
  provider = "postgresql"
}

schemaSA.prisma:

generator client {
    provider = "prisma-client"
    engineType = "client"
    output   = "./generated/superadmin"
}

datasource db {
    provider  = "postgresql"
}

Then I created schema.config.ts and schemaSA.config.ts

schema.config.ts

/** @format */

import 'dotenv/config';
import { defineConfig } from 'prisma/config';

// Main Admin Database Configuration
export default defineConfig({
  schema: 'prisma/schema.prisma',
  migrations: {
    path: 'prisma/migrations',
  },
  datasource: {
    url: process.env.DATABASE_URL as string,
  }
});

schemaSA.config.ts

/** @format */

import 'dotenv/config';
import { defineConfig } from 'prisma/config';

// Super Admin Database Configuration
export default defineConfig({
  schema: 'prisma/schemaSA.prisma',
  migrations: {
    path: 'prisma/migrationsSA',
  },
  datasource: {
    url: process.env.DATABASE_URL_SUPER_ADMIN as string,
  },
});

Then I created main-prisma.service.ts and superadmin-prisma.service.ts

main-prisma.service.ts

import { Injectable, OnModuleInit, OnModuleDestroy } from '@nestjs/common';
import { PrismaClient } from 'prisma/generated/main';
import { PrismaPg } from '@prisma/adapter-pg';
import { readReplicas } from '@prisma/extension-read-replicas';

@Injectable()
export class MainPrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy {
  constructor() {
    const adapter = new PrismaPg({
      connectionString: process.env.DATABASE_URL_ADMIN_POOLING as string,
    });

    super({ adapter });

    // Create replica clients with adapters
    const replicaAdapter1 = new PrismaPg({
      connectionString: process.env.DATABASE_REPLICA_ADMIN_URL_1 as string,
    });

    const replicaAdapter2 = new PrismaPg({
      connectionString: process.env.DATABASE_REPLICA_ADMIN_URL_2 as string,
    });

    const replicaClient1 = new PrismaClient({ adapter: replicaAdapter1 });
    const replicaClient2 = new PrismaClient({ adapter: replicaAdapter2 });

    // Extend with read replicas
    this.$extends(
      readReplicas({
        replicas: [replicaClient1, replicaClient2],
      }),
    );
  }

  async onModuleInit() {
    await this.$connect();
  }

  async onModuleDestroy() {
    await this.$disconnect();
  }
}

superadmin-prisma.service.ts

import { Injectable, OnModuleInit, OnModuleDestroy } from '@nestjs/common';
import { PrismaClient } from 'prisma/generated/superadmin';
import { PrismaPg } from '@prisma/adapter-pg';
import { readReplicas } from '@prisma/extension-read-replicas';

@Injectable()
export class SuperAdminPrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy {
  constructor() {
    const adapter = new PrismaPg({
      connectionString: process.env.DATABASE_URL_SUPER_ADMIN_POOLING as string,
    });

    super({ adapter });

    // Create replica clients with adapters
    const replicaAdapter1 = new PrismaPg({
      connectionString: process.env.DATABASE_REPLICA_SUPER_ADMIN_URL_1 as string,
    });

    const replicaAdapter2 = new PrismaPg({
      connectionString: process.env.DATABASE_REPLICA_SUPER_ADMIN_URL_2 as string,
    });

    const replicaClient1 = new PrismaClient({ adapter: replicaAdapter1 });
    const replicaClient2 = new PrismaClient({ adapter: replicaAdapter2 });

    // Extend with read replicas
    this.$extends(
      readReplicas({
        replicas: [replicaClient1, replicaClient2],
      }),
    );
  }

  async onModuleInit() {
    await this.$connect();
  }

  async onModuleDestroy() {
    await this.$disconnect();
  }
}

THen I generated prisma client using commands:

npx prisma generate

npx prisma generate --schema=./prisma/schemaSA.prisma --config=./schemaSA.config.ts

Here, I have pasted the picture of the error in terminal:

In Prisma 7 and later, you must construct the client with an adapter or accelerate URL. For example, with PostgreSQL: import { PrismaClient } from '@prisma/client'; import { PrismaPg } from '@prisma/adapter-pg'; const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL!, }); const prisma = new PrismaClient({ adapter }); Or, if you want Rust‑free direct connection via accelerate: const prisma = new PrismaClient({ accelerateUrl: process.env.DATABASE_URL!, });

API access

Get this solution programmatically \u2014 free, no authentication.

curl https://depscope.dev/api/error/324a971926aee97746d384a2c32f55394dcc6ff04de042dca8bc63d3bc881ce8
hash \u00b7 324a971926aee97746d384a2c32f55394dcc6ff04de042dca8bc63d3bc881ce8
PrismaClientInitializationError: `PrismaClient` needs to be… — DepScope fix | DepScope