P
Prisma4w ago
zander

Prisma Optimize Setup Error

I am receiving the following error after trying to setup prisma optimize in a monorepo. SyntaxError: The requested module 'prisma-instrumentation-5-x' does not provide an export named 'PrismaInstrumentation' My versions are as follows
"@prisma/client": "^6.13.0",
"@prisma/extension-optimize": "^2.0.0",
"@prisma/instrumentation": "^6.13.0",
"prisma": "^6.13.0",
"@prisma/client": "^6.13.0",
"@prisma/extension-optimize": "^2.0.0",
"@prisma/instrumentation": "^6.13.0",
"prisma": "^6.13.0",
and this is how i am attempting to create my prisma client
import 'dotenv/config';

import { PrismaPg } from '@prisma/adapter-pg';
import { withOptimize } from '@prisma/extension-optimize';
import * as z from 'zod';
import { PrismaClient } from '../generated/prisma/client.js';

const envSchema = z.object({
DATABASE_URL: z.string(),
PRISMA_OPTIMIZE_API_KEY: z.string(),
});

const env = envSchema.parse(process.env);

const globalForPrisma = global as unknown as { prisma: PrismaClient };

const adapter = new PrismaPg({ connectionString: env.DATABASE_URL });
export const prisma =
globalForPrisma.prisma ||
new PrismaClient({ adapter }).$extends(
withOptimize({
apiKey: env.PRISMA_OPTIMIZE_API_KEY,
})
);

if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;
import 'dotenv/config';

import { PrismaPg } from '@prisma/adapter-pg';
import { withOptimize } from '@prisma/extension-optimize';
import * as z from 'zod';
import { PrismaClient } from '../generated/prisma/client.js';

const envSchema = z.object({
DATABASE_URL: z.string(),
PRISMA_OPTIMIZE_API_KEY: z.string(),
});

const env = envSchema.parse(process.env);

const globalForPrisma = global as unknown as { prisma: PrismaClient };

const adapter = new PrismaPg({ connectionString: env.DATABASE_URL });
export const prisma =
globalForPrisma.prisma ||
new PrismaClient({ adapter }).$extends(
withOptimize({
apiKey: env.PRISMA_OPTIMIZE_API_KEY,
})
);

if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;
Any help would be greatly appreciated thanks!
6 Replies
Prisma AI Help
You selected the carefully hand-crafted route. A dev artisan will respond soon. Meanwhile, the #ask-ai channel awaits if you're curious!
Nurul
Nurul4w ago
Is your repository open source? If yes, can you share the link to the repository? I would like to reproduce this to investigate
zander
zanderOP3w ago
I think it may be because of the pgAdapter, I realized afterwords that the docs say they are not supported yet
Borgir
Borgir3w ago
i have the exact same problem: error: SyntaxError: The requested module 'prisma-instrumentation-5-x' does not provide an export named 'PrismaInstrumentation' versions:
"@prisma/client": "^6.13.0",
"@prisma/extension-optimize": "^2.0.0",
"prisma": "^6.13.0",
"@prisma/client": "^6.13.0",
"@prisma/extension-optimize": "^2.0.0",
"prisma": "^6.13.0",
code:
import { PrismaClient } from "@prisma/client";
import { withOptimize } from "@prisma/extension-optimize";
import { withSoftDeleteExtension } from "./prisma_extensions/soft_delete";

/**
* The prisma client without any extensions.
* Note that this client is unsafe to use as it can potentially cause unexpected behaviour (such as hard-deleting items that are usually soft-deleted)
*/
export const prismaClientUnsafe = new PrismaClient({
transactionOptions: {
maxWait: 15000,
timeout: 15000,
},
});

const prismaClientSingleton = () => {
return withSoftDeleteExtension(prismaClientUnsafe).$extends(
withOptimize({ apiKey: process.env.OPTIMIZE_API_KEY as string }),
);
};
type PrismaClientSingleton = ReturnType<typeof prismaClientSingleton>;

/**
* Store prisma singleton on the global object to avoid recreating it on hot reload
* @see https://www.prisma.io/docs/support/help-articles/nextjs-prisma-client-dev-practices
*/

declare global {
// eslint-disable-next-line no-var,vars-on-top
var prisma: PrismaClientSingleton;
}

export const prisma = globalThis.prisma ?? prismaClientSingleton();

if (process.env.NODE_ENV !== "production") {
globalThis.prisma = prisma;
}
import { PrismaClient } from "@prisma/client";
import { withOptimize } from "@prisma/extension-optimize";
import { withSoftDeleteExtension } from "./prisma_extensions/soft_delete";

/**
* The prisma client without any extensions.
* Note that this client is unsafe to use as it can potentially cause unexpected behaviour (such as hard-deleting items that are usually soft-deleted)
*/
export const prismaClientUnsafe = new PrismaClient({
transactionOptions: {
maxWait: 15000,
timeout: 15000,
},
});

const prismaClientSingleton = () => {
return withSoftDeleteExtension(prismaClientUnsafe).$extends(
withOptimize({ apiKey: process.env.OPTIMIZE_API_KEY as string }),
);
};
type PrismaClientSingleton = ReturnType<typeof prismaClientSingleton>;

/**
* Store prisma singleton on the global object to avoid recreating it on hot reload
* @see https://www.prisma.io/docs/support/help-articles/nextjs-prisma-client-dev-practices
*/

declare global {
// eslint-disable-next-line no-var,vars-on-top
var prisma: PrismaClientSingleton;
}

export const prisma = globalThis.prisma ?? prismaClientSingleton();

if (process.env.NODE_ENV !== "production") {
globalThis.prisma = prisma;
}
Nurul
Nurul2w ago
Does it work as expected if you don't use Driver Adapters?
zander
zanderOP2w ago
I haven’t tested without the adapters, I was under the impression that when using the new querycompiler it was required to also use driverAdapters

Did you find this page helpful?