Mise à jour vers Prisma ORM 7
Guide complet pour migrer de Prisma ORM v6 à v7. Cette mise à jour introduit des modifications majeures autour du nouveau générateur prisma-client, des adaptateurs de pilotes, de prisma.config.ts, du chargement explicite de l'environnement et des points d'entrée du client généré.
Quand l'appliquer
Consultez cette compétence quand :
- Mise à niveau de Prisma v6 à v7
- Mise à jour du générateur
prisma-client - Configuration des adaptateurs de pilotes
- Configuration de
prisma.config.ts - Correction des erreurs d'importation après la mise à niveau
Catégories de règles par priorité
| Priorité | Catégorie | Impact | Préfixe |
|---|---|---|---|
| 1 | Schéma Migration | CRITIQUE | schema-changes |
| 2 | Connectivité base de données | CRITIQUE | driver-adapters |
| 3 | Système de modules | CRITIQUE | esm-support |
| 4 | Config et Env | ÉLEVÉ | prisma-config, env-variables |
| 5 | Fonctionnalités supprimées | ÉLEVÉ | removed-features |
| 6 | Accelerate | ÉLEVÉ | accelerate-users |
Référence rapide
schema-changes- migration du générateur, chemins de sortie requis, points d'entrée générés et remplacement dePrisma.validatordriver-adapters- installation obligatoire d'adaptateurs pour les fournisseurs SQL, différences de pool et choix d'adaptateurs Prisma Postgresesm-support- configuration ESM-first avec secours CommonJS en utilisantmoduleFormat = "cjs"prisma-config- création et utilisation deprisma.config.tsenv-variables- chargement explicite de l'environnementremoved-features- intergiciels supprimés, métriques et comportement CLI héritéaccelerate-users- notes de migration pour les utilisateurs d'Accelerate
Notes importantes
- Les projets MongoDB doivent rester sur Prisma 6.x - ne migrez pas les applications MongoDB vers le chemin du client SQL de Prisma 7
- Node.js 20.19.0+ requis
- TypeScript 5.4.0+ requis
- Version stable la plus récente de Prisma ORM :
7.6.0
Aperçu des étapes de mise à niveau
- Mettre à jour les packages vers v7
- Choisir votre format de module (
esmpar défaut,cjssi nécessaire) - Mettre à jour la configuration TypeScript
- Mettre à jour le bloc du générateur de schéma
- Créer
prisma.config.ts - Installer et configurer un adaptateur de pilote pour les fournisseurs SQL
- Mettre à jour les importations de Prisma Client
- Mettre à jour l'instanciation du client
- Remplacer les motifs d'assistance dépréciés comme
Prisma.validator - Exécuter
prisma generateet tester
Commandes de mise à niveau rapide
# Mettre à jour les packages
npm install @prisma/client@7
npm install -D prisma@7
# Installer un adaptateur de pilote (PostgreSQL ou Prisma Postgres via TCP direct)
npm install @prisma/adapter-pg pg
# Installer dotenv pour le chargement de l'environnement
npm install dotenv
# Régénérer le client
npx prisma generate
Résumé des modifications majeures
| Modification | v6 | v7 |
|---|---|---|
| Format de module | Implicite / mixte | ESM-first, moduleFormat = "cjs" supporté |
| Fournisseur de générateur | prisma-client-js |
prisma-client par défaut, tandis que prisma-client-js existe toujours pour les configurations héritées |
| Chemin de sortie | Auto (node_modules) | Explicite requis |
| Adaptateurs de pilotes | Optionnel | Requis pour les fournisseurs SQL |
| Fichier de configuration | .env + schéma |
prisma.config.ts |
| Chargement de l'environnement | Automatique | Manuel (dotenv) |
| Points d'entrée générés | Export de package unique | Points d'entrée client, browser, models, enums |
| Fragments de requête type-safe | Prisma.validator() |
TypeScript satisfies |
| Intergiciel | $use() |
Extensions du client |
| Métriques | Fonctionnalité en aperçu | Supprimée |
Fichiers de règles
Guides de migration détaillés pour chaque modification majeure :
references/esm-support.md - Configuration ESM et CommonJS
references/schema-changes.md - Générateur, sortie, importations et points d'entrée générés
references/driver-adapters.md - Configuration obligatoire de l'adaptateur de pilote
references/prisma-config.md - Nouveau fichier de configuration
references/env-variables.md - Chargement des variables d'environnement
references/removed-features.md - Intergiciels supprimés, métriques et drapeaux CLI
references/accelerate-users.md - Gestion spéciale pour Accelerate
Migration étape par étape
1. Mettre à jour package.json pour les projets ESM-first
{
"type": "module"
}
Si vous devez rester sur CommonJS, gardez votre application en tant que CJS et définissez moduleFormat = "cjs" dans le bloc du générateur à la place de forcer ESM.
2. Mettre à jour tsconfig.json
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "bundler",
"target": "ES2023",
"strict": true,
"esModuleInterop": true
}
}
3. Mettre à jour schema.prisma
// Avant (v6)
generator client {
provider = "prisma-client-js"
}
// Après (v7)
generator client {
provider = "prisma-client"
output = "../generated/prisma"
// Optionnel si vous avez besoin de CommonJS :
// moduleFormat = "cjs"
}
4. Créer prisma.config.ts
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DATABASE_URL'),
},
})
5. Installer un adaptateur de pilote (fournisseurs SQL uniquement)
# PostgreSQL
npm install @prisma/adapter-pg pg
# MySQL
npm install @prisma/adapter-mariadb mariadb
# SQLite
npm install @prisma/adapter-better-sqlite3 better-sqlite3
# Prisma Postgres dans les applications Node.js standard (recommandé)
npm install @prisma/adapter-pg pg
# Pilote serverless Prisma Postgres (edge/serverless)
npm install @prisma/adapter-ppg @prisma/ppg
# Neon
npm install @prisma/adapter-neon
MongoDB n'a pas de package SQL @prisma/adapter-* dans les packages Prisma 7.6.0 publiés. Si vous mettez à niveau un projet MongoDB, arrêtez-vous et gardez ce projet sur la dernière version Prisma 6.x au lieu de suivre le chemin de migration standard de Prisma 7.
6. Mettre à jour l'instanciation du client
// Avant (v6)
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
// Après (v7)
import { PrismaClient } from '../generated/prisma/client'
import { PrismaPg } from '@prisma/adapter-pg'
const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL
})
const prisma = new PrismaClient({ adapter })
7. Remplacer Prisma.validator par satisfies
import { Prisma } from '../generated/prisma/client'
const userSelect = {
id: true,
email: true,
name: true,
} satisfies Prisma.UserSelect
8. Exécuter les migrations et générer
npx prisma generate
npx prisma migrate dev # si nécessaire
Dépannage
Erreurs "Cannot find module"
- Vérifiez que le chemin
outputdu générateur correspond à votre chemin d'importation - Assurez-vous que
prisma generates'est exécuté avec succès
Erreurs de certificat SSL
- Ajoutez
ssl: { rejectUnauthorized: false }à la configuration de l'adaptateur si vous devez préserver l'ancien comportement - Ou configurez correctement vos certificats avec les paramètres
NODE_EXTRA_CA_CERTS/ OpenSSL CA
Problèmes d'expiration de connexion
- Les adaptateurs de pilotes utilisent les valeurs par défaut du pilote sous-jacent, qui diffèrent de v6
- Configurez explicitement les paramètres du pool sur l'adaptateur si nécessaire
Ressources
- Guide de mise à niveau officiel v7
- Documentation des adaptateurs de pilotes
- Référence de configuration Prisma
Comment l'utiliser
Suivez d'abord references/schema-changes.md et references/driver-adapters.md, puis appliquez les fichiers de référence restants en fonction de la configuration de votre projet.