skills/prisma-upgrade-v7-esm-support/SKILL.md
ESM Support. Reference when using this Prisma feature.
npx skillsauth add prisma/cursor-plugin prisma-upgrade-v7-esm-supportInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Prisma ORM v7 ships as an ES module only. Your project must be configured for ESM.
Add the type field:
{
"type": "module",
"scripts": {
"build": "tsc",
"start": "node dist/index.js"
}
}
Configure for ESM:
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "bundler",
"target": "ES2023",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"outDir": "dist"
},
"include": ["src/**/*", "prisma/**/*"]
}
{
"compilerOptions": {
"module": "Node16",
"moduleResolution": "Node16",
"target": "ES2022"
}
}
// ESM (v7)
import { PrismaClient } from '../generated/client'
// Not: require()
With moduleResolution: "Node16", add .js extensions:
import { helper } from './utils/helper.js'
With moduleResolution: "bundler", extensions are optional.
| Requirement | Minimum Version | |-------------|-----------------| | Node.js | 20.19.0 | | TypeScript | 5.4.0 |
If you must use CommonJS:
// CommonJS file
async function main() {
const { PrismaClient } = await import('../generated/client.js')
const prisma = new PrismaClient()
}
Create an ESM wrapper:
// prisma.mjs
import { PrismaClient } from '../generated/client'
export const prisma = new PrismaClient()
Next.js supports ESM. Ensure next.config.js → next.config.mjs:
// next.config.mjs
export default {
// config
}
Update entry point:
// index.js (with "type": "module")
import express from 'express'
import { PrismaClient } from '../generated/client'
const app = express()
const prisma = new PrismaClient()
Configure Jest for ESM:
{
"jest": {
"preset": "ts-jest/presets/default-esm",
"extensionsToTreatAsEsm": [".ts"],
"transform": {
"^.+\\.tsx?$": ["ts-jest", { "useESM": true }]
}
}
}
Or use Vitest which has native ESM support.
Your code is using require() on an ESM module. Switch to import.
Add "type": "module" to package.json.
Ensure module and moduleResolution are set correctly in tsconfig.json.
databases
Schema Changes. Reference when using this Prisma feature.
tools
Removed Features. Reference when using this Prisma feature.
tools
Prisma Config. Reference when using this Prisma feature.
tools
Environment Variables