Accueil / Articles

Configurer Prisma 7 avec des URL Accelerate

Prisma 7 avec Accelerate : le nouveau prisma.config.ts, les arguments du constructeur, les protocoles accelerateURL, les corrections de tsconfig ainsi qu’une DOUBLE DATABASE_URL pour PostgreSQL.

Éditeur : REACTAPP.TOP4 min de lecture892 mots

Sources: How I Configured Prisma 7 (New Changes, Issues, and How I Solved Them)

Prisma 7 (sorti le 19 novembre 2025) modifie suffisamment la configuration pour que de nombreux tutoriels Prisma 6 ne soient plus applicables. Les notes ci-dessous proviennent de la lecture des documents, de l’examen des fichiers de déclaration générés, ainsi que du traitement des erreurs qui apparaissent lors d’une première configuration SQL/Postgres — en particulier pour ceux venant de MongoDB et Mongoose.

Le chemin d’upgrade est particulièrement difficile pour les apprenants débutants : la première création réussie de PrismaClient dans les anciens documents est souvent incorrecte dès le premier jour avec v7. Considérez les arguments du constructeur et les fichiers de configuration comme faisant partie intégrante du modèle conceptuel de base, et non comme des sujets avancés optionnels.

1. Première grande modification : prisma.config.ts

Après l’installation, Prisma génère un nouveau fichier racine :

prisma.config.ts

Les versions précédentes plaçaient DATABASE_URL à l’intérieur de schema.prisma. Cette configuration de connexion se trouve désormais dans prisma.config.ts.

Forme générée :

// This file was generated by Prisma and assumes you have installed the following:
// npm install --save-dev prisma dotenv
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"),
  },
});

Qu’a changé ?

  • env("DATABASE_URL") n’est plus de la responsabilité du schéma.
  • Les paramètres liés à l’environnement sont déplacés dans le nouveau fichier.
  • schema.prisma reste axé sur les modèles.

2. Résolution du problème de répertoire racine dans tsconfig.json

Si tsconfig.json contient :

"rootDir": "./src"

TypeScript refuse prisma.config.ts placé en dehors de src. Il faut élargir le répertoire racine :

"rootDir": "./"

3. Migration et génération du client

Lorsque les modèles existent :

npx prisma migrate dev
npx prisma generate

Le bloc de génération du schéma oriente le client vers la source :

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

La génération peut sembler correcte jusqu’à la création de PrismaClient.

4. L’erreur la plus déroutante : « 1 argument attendu, 0 reçu »

Cette construction avec zéro argument :

const prisma = new PrismaClient();

Importez PrismaClient depuis le module client généré — et non à partir d’un fichier de classe associé. Même ainsi, Prisma 7 peut refuser les appels avec zéro argument :

Expected 1 argument, but got 0.

Les tutoriels plus anciens montrent encore un constructeur sans argument. En examinant les fichiers client / class générés, on constate que le constructeur exige désormais des paramètres de configuration, notamment :

accelerateURL

5. Présentation de accelerateURL (nouveau en Prisma 7)

Prisma 7 s’intègre étroitement avec Prisma Accelerate — un système de mise en cache globale des requêtes ainsi que de gestion de pool de connexions. Accelerate vise à :

  • mettre en cache les requêtes de manière globale
  • réduire la latence
  • gérer des connexions en pool pour les environnements serverless

Dans ce mode, PrismaClient exige une valeur pour accelerateURL.

6. Prisma propose désormais sa propre base de données cloud

Le tableau de bord Prisma peut :

  • créer une base de données
  • générer une clé API Accelerate
  • fournir un accelerateURL pour le client

Un problème pratique : les URLs de style Neon ordinaires qui commencent par :

" postgresql:// "

ne respectent pas les protocoles attendus par Accelerate :

" prisma:// " or " prisma+postgres:// "

Ces incohérences entraînent des erreurs liées à :

InvalidDatasourceError: Error validating `accelerateUrl`: the URL must
start with the protocol `prisma://` or `prisma+postgres://`

7. Configuration finale fonctionnelle de PrismaClient (Prisma 7)

Un modèle fonctionnel :

import { withAccelerate } from "@prisma/extension-accelerate";
import { PrismaClient } from "../src/generated/prisma/client.js";
import { DATABASE_URL } from "../config/index.js";

export const prisma = new PrismaClient({
  accelerateUrl: DATABASE_URL as string
}).$extends(withAccelerate());

Qu’est-ce que $extends ?

$extends() permet d’ajouter des fonctionnalités telles qu’Accelerate au client.

8. Remarque importante : deux variables d’environnement nécessaires

Les configurations Prisma 7 en ce mode exigent généralement :

DATABASE_URL → URL Accelerate

DIRECT_DATABASE_URL → chaîne de connexion directe à PostgreSQL

prisma.config.ts doit utiliser l’URL directe pour les migrations :

export default defineConfig({
  schema: "prisma/schema.prisma",
  migrations: {
    path: "prisma/migrations",
  },
  datasource: {
    url: env("DIRECT_DATABASE_URL"),
  },
});

Puis migrez et générez à nouveau :

npx prisma migrate dev
npx prisma generate

Les configurations orientées Accelerate modifient également les habitudes opérationnelles. Les migrations et l’introspection nécessitent toujours une URL de base de données directe, tandis que le trafic de l’application peut passer par l’endpoint Accelerate. Mélanger ces deux URL — placer une URL Postgres directe là où une URL Accelerate est requise, ou l’inverse — génère des erreurs qui semblent sans rapport avec la ligne de code de l’application en cours d’édition. Assurez-vous que les deux valeurs soient clairement nommées dans les exemples de .env et que des erreurs soient générées rapidement au démarrage si l’un ou l’autre préfixe de protocole est incorrect.

Pour les équipes qui migrent depuis Prisma 6, s’attendre à une liste de vérifications plutôt qu’à une mise à niveau directe : ajouter prisma.config.ts, élargir rootDir si nécessaire, cesser de créer PrismaClient avec zéro argument lorsque Accelerate est activé, intégrer $extends(withAccelerate()), et séparer les variables d’environnement. Une fois cette liste de vérifications intégrée comme une habitude, la modélisation quotidienne redevient familière.

Conclusion

Les changements majeurs de Prisma 7 — prisma.config.ts, les arguments obligatoires du client, accelerateURL et $extends — ne sont pas suffisamment abordés dans la documentation de Prisma 6. Une fois que les règles relatives à l’URL d’Accelerate et la séparation des environnements sont claires, la configuration du client devient prévisible tant pour les utilisateurs débutants en SQL que pour ceux qui font une mise à niveau depuis v6.