Skip to main content

prisma-upgrade-v7-esm-support

ESM Support. Reference when using this Prisma feature.

跳到安装

来源信息

仓库
prisma/cursor-plugin
最近来源活动
2026年2月6日 14:17
检测到的 SKILL.md 语言
英语
星标
9
分支
1

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
2 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
prisma-upgrade-v7-esm-support
description
ESM Support. Reference when using this Prisma feature.
license
MIT
metadata
{"author":"prisma","version":"7.0.0"}
# ESM Support Prisma ORM v7 ships as an ES module only. Your project must be configured for ESM. ## Required Changes ### package.json Add the `type` field: ```json { "type": "module", "scripts": { "build": "tsc", "start": "node dist/index.js" } } ``` ### tsconfig.json Configure for ESM: ```json { "compilerOptions": { "module": "ESNext", "moduleResolution": "bundler", "target": "ES2023", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "outDir": "dist" }, "include": ["src/**/*", "prisma/**/*"] } ``` ### Alternative: Node16/NodeNext ```json { "compilerOptions": { "module": "Node16", "moduleResolution": "Node16", "target": "ES2022" } } ``` ## Import Syntax Changes ### Named imports ```typescript // ESM (v7) import { PrismaClient } from '../generated/client' // Not: require() ``` ### File extensions With `moduleResolution: "Node16"`, add `.js` extensions: ```typescript import { helper } from './utils/helper.js' ``` With `moduleResolution: "bundler"`, extensions are optional. ## Minimum Versions | Requirement | Minimum Version | |-------------|-----------------| | Node.js | 20.19.0 | | TypeScript | 5.4.0 | ## CommonJS Compatibility If you must use CommonJS: ### Dynamic import ```javascript // CommonJS file async function main() { const { PrismaClient } = await import('../generated/client.js') const prisma = new PrismaClient() } ``` ### Separate ESM file Create an ESM wrapper: ```javascript // prisma.mjs import { PrismaClient } from '../generated/client' export const prisma = new PrismaClient() ``` ## Framework Considerations ### Next.js Next.js supports ESM. Ensure `next.config.js` → `next.config.mjs`: ```javascript // next.config.mjs export default { // config } ``` ### Express Update entry point: ```javascript // index.js (with "type": "module") import express from 'express' import { PrismaClient } from '../generated/client' const app = express() const prisma = new PrismaClient() ``` ### Jest Configure Jest for ESM: ```json { "jest": { "preset": "ts-jest/presets/default-esm", "extensionsToTreatAsEsm": [".ts"], "transform": { "^.+\\.tsx?$": ["ts-jest", { "useESM": true }] } } } ``` Or use Vitest which has native ESM support. ## Troubleshooting ### "ERR_REQUIRE_ESM" Your code is using `require()` on an ESM module. Switch to `import`. ### "Cannot use import statement outside a module" Add `"type": "module"` to package.json. ### TypeScript compilation errors Ensure `module` and `moduleResolution` are set correctly in tsconfig.json.
在 GitHub 查看