Changer le thème

Guide complet Cloudflare Pages : déployer React/Vue/Next.js (config + erreurs courantes)

Easton editorial illustration: orchestration hub with branches

Introduction

Vous avez fini un projet React et vous ouvrez Cloudflare Pages : les champs « Build Command » et « Build Output Directory » vous bloquent. npm run build ou npm build ? build ou dist ? Comment configurer les variables d’environnement ?

Ce guide vous accompagne pour déployer React, Vue et Next.js sur Cloudflare Pages : checklist complète, variables d’environnement et cinq erreurs courantes (dont nodejs_compat pour Next.js).


Pourquoi j’ai choisi Cloudflare Pages ?

Vercel et Netlify existent déjà — pourquoi Pages ?

J’ai longtemps utilisé Vercel. Ce n’est pas mauvais, mais le plan gratuit limite le trafic. Plusieurs petits projets ont dépassé 100 Go/mois ; Vercel a commencé à ralentir.

En comparant les trois plateformes, l’offre gratuite de Cloudflare Pages se démarque :

Illimité
Trafic gratuit
Vercel et Netlify : 100 Go/mois
500/mois
Builds
Vercel : 6000 min/mois, Netlify : 300 min/mois
300+
Nœuds CDN
Mondial, HTTPS automatique
Oui
Projets commerciaux
Vercel : limites, Netlify : oui

Le trafic illimité change la donne : plusieurs projets perso sur CF Pages, sans anxiété de quota.

Cas adaptés :

  • Blog perso, portfolio
  • Projets frontend moyens (SPA, statique)
  • Accélération mondiale
  • Trafic imprévisible (illimité gratuit)

Moins adaptés :

  • Grosses apps Next.js SSR complexes (support Next.js inférieur à Vercel)
  • Builds très fréquents (500 builds/mois max)
  • Fonctions exclusives Vercel (ex. Edge Middleware)

Préparation avant déploiement

Avant de commencer :

  1. Compte Cloudflare
    • Inscription sur cloudflare.com (gratuit)
    • Validation e-mail suffit pour démarrer
  2. Dépôt Git
    • Code sur GitHub ou GitLab
    • CF Pages build depuis le dépôt
  3. Connaître votre build
    • CRA ou Vite ?
    • Commande de build ? (souvent npm run build)
    • Dossier de sortie ? (CRA : build, Vite : dist)

Prêt ? Passons au déploiement.


Déployer une application React

React est très répandu ; j’ai déployé plusieurs projets React sur CF Pages. Voici une checklist fiable.

Créer rapidement un projet React (optionnel)

# Méthode 1 : Vite (recommandé, build plus rapide)
npm create vite@latest my-react-app -- --template react
cd my-react-app
npm install
# Méthode 2 : Create React App
npx create-react-app my-react-app
cd my-react-app

Je recommande Vite : CRA devient lent sur les gros projets.

Checklist Cloudflare Pages

Dashboard Cloudflare → Pages → « Créer un projet » → « Connecter Git » → choisir le dépôt GitHub.

Configuration :

ÉlémentProjet ViteProjet CRA
Framework presetNoneCreate React App
Build commandnpm run buildnpm run build
Build output directorydistbuild
Root directory/ (défaut)/ (défaut)
Environment variablespréfixe VITE_*préfixe REACT_APP_*

Notes :

  • Vite : preset « None » suffit souvent
  • CRA : preset « Create React App » remplit les champs
  • Piège fréquent : dist pour Vite, build pour CRA — ne pas inverser

Variables d’environnement

Les variables exposées au client exigent un préfixe spécifique.

Vite :

  • Préfixe VITE_
  • Ex. : VITE_API_URL, VITE_API_KEY

CRA :

  • Préfixe REACT_APP_
  • Ex. : REACT_APP_API_URL, REACT_APP_API_KEY

Configuration :

  1. Dans Cloudflare Pages (recommandé) :
    • Projet → Settings → Environment variables
    • « Add variable »
    • Environnement : Production ou Preview
    • Nom et valeur
  2. Dans le code :
// Vite
const apiUrl = import.meta.env.VITE_API_URL;
// CRA
const apiUrl = process.env.REACT_APP_API_URL;

Local — .env.local :

# Vite
VITE_API_URL=https://api.example.com
VITE_API_KEY=your-api-key-here
# CRA
REACT_APP_API_URL=https://api.example.com
REACT_APP_API_KEY=your-api-key-here

Important :

  • Ne pas committer .env.local ; ajouter .env*.local dans .gitignore
  • Après modification des variables, redéployer

SPA : corriger le 404 au refresh

Avec React Router, un refresh peut afficher 404 : le serveur cherche un fichier physique au lieu de index.html.

Solution : fichier _redirects dans public :

/* /index.html 200

Une ligne : toutes les routes renvoient index.html avec le statut 200. Redéployez.

Vérifier le déploiement

« Save and Deploy » lance le build. Suivez « Deployments » et les logs.

Succès :

  • Log « Success: Deployed to… »
  • Lien xxx.pages.dev
  • Le site s’affiche

Échec fréquent :

  • Mauvais dossier de sortie (Vite → build ou CRA → dist)
  • Node trop ancien → variable NODE_VERSION=18
  • Échec npm install → vérifier package.json

Déployer une application Vue

Proche de React, avec quelques nuances.

Créer un projet Vue (optionnel)

# Vite (recommandé)
npm create vite@latest my-vue-app -- --template vue
cd my-vue-app
npm install
# Vue CLI
vue create my-vue-app
cd my-vue-app

Checklist Cloudflare Pages

ÉlémentViteVue CLI
Framework presetNoneVue
Build commandnpm run buildnpm run build
Build output directorydistdist
Root directory//
Environment variablesVITE_*VUE_APP_*

Rappel : Vite et Vue CLI sortent dans dist ; préfixes VITE_ vs VUE_APP_.

Variables d’environnement

Vite + Vue — .env.local :

VITE_API_BASE_URL=https://api.example.com
VITE_APP_TITLE=My Vue App

Vue CLI — .env.production :

VUE_APP_API_BASE_URL=https://api.example.com
VUE_APP_TITLE=My Vue App

Code :

// Vite
const apiUrl = import.meta.env.VITE_API_BASE_URL;
// Vue CLI
const apiUrl = process.env.VUE_APP_API_BASE_URL;

Vue Router

En mode History, configurez la redirection sinon refresh → 404.

Méthode 1 — _redirects dans public (recommandé) :

/* /index.html 200

Méthode 2 — vite.config.js (hors racine) :

// vite.config.js
export default {
  base: '/', // chemin racine
}

Dépannage

Assets statiques 404 : vérifier publicPath / base dans vue.config.js ou vite.config.js :

// vue.config.js (Vue CLI)
module.exports = {
  publicPath: '/',
}

Vite : « Unknown file extension » — souvent Node trop ancien. Ajoutez :

NODE_VERSION=18

puis redéployez.


Déployer Next.js (section importante)

Next.js sur Cloudflare Pages est le plus délicat des trois. La première fois, nodejs_compat m’a bloqué une après-midi.

Pour un gros besoin SSR, Vercel reste souvent plus simple. Pour un site statique ou un SSR léger, CF Pages convient — trafic illimité gratuit inclus.

Spécificités Next.js

  1. Pages n’est pas dédié Next.js comme Vercel
  2. Deux modes : export statique (simple) ou SSR (adaptateur)
  3. SSR : @opennextjs/cloudflare (@cloudflare/next-on-pages est obsolète)

Mode 1 : export statique (recommandé pour débuter)

Sans SSR, API Routes, ISR, etc.

Cas : blog, doc, vitrine, pas de données dynamiques serveur.

Étapes :

  1. next.config.js :
/** @type {import('next').NextConfig} */
const nextConfig = {
  output: 'export', // export statique
  images: {
    unoptimized: true, // pas d'Image Optimization sur CF Pages
  },
}
module.exports = nextConfig
  1. Cloudflare Pages :
ÉlémentValeur
Framework presetNext.js (Static HTML Export)
Build commandnpm run build
Build output directoryout
Root directory/
  1. Déployez.

Limites :

  • ❌ Pas d’API Routes
  • ❌ Pas d’ISR
  • ❌ Pas de Server Components
  • ❌ Pas de SSR sur routes dynamiques

Si cela suffit, l’export statique est la voie la plus simple.

Mode 2 : SSR (adaptateur OpenNext)

Pour API Routes, SSR, routes dynamiques :

npm install @opennextjs/cloudflare

next.config.js :

/** @type {import('next').NextConfig} */
const nextConfig = {
  images: {
    unoptimized: true,
  },
}
module.exports = nextConfig

Cloudflare Pages :

ÉlémentValeur
Framework presetNone
Build commandnpx @opennextjs/cloudflare
Build output directory.worker-next
Root directory/

Compatibility Flags (erreur la plus fréquente) :

Sans ce réglage : nodejs_compat is not defined ou 500.

  1. Projet → SettingsFunctions
  2. Compatibility flags
  3. Configure Production compatibility flag
  4. Ajouter nodejs_compat
  5. Compatibility Date : au moins 2024-09-23

Production et Preview doivent avoir le flag.

Edge Runtime :

API Routes ou Server Components → déclaration obligatoire :

// app/api/hello/route.js
export const runtime = 'edge';
export async function GET(request) {
  return new Response(JSON.stringify({ message: 'Hello from CF Pages' }), {
    headers: { 'content-type': 'application/json' },
  });
}
// pages/api/hello.js (Pages Router)
export const config = {
  runtime: 'edge',
};
export default function handler(req) {
  return new Response(JSON.stringify({ message: 'Hello from CF Pages' }), {
    headers: { 'content-type': 'application/json' },
  });
}

Tout fichier exécuté côté serveur doit inclure cette déclaration.

Variables d’environnement Next.js

Client (préfixe obligatoire) :

NEXT_PUBLIC_API_URL=https://api.example.com
NEXT_PUBLIC_SITE_NAME=My Next.js Site

Serveur (sans préfixe) :

DATABASE_URL=postgresql://...
API_SECRET=your-secret-key

Dashboard : Settings → Environment variables → Production / Preview.

// Client
const apiUrl = process.env.NEXT_PUBLIC_API_URL;
// Serveur
const dbUrl = process.env.DATABASE_URL;

Erreurs Next.js courantes

Erreur 1 : nodejs_compat is not defined ou 500

Error: The global scope does not support nodejs_compat

Cause : flag nodejs_compat manquant.

Solution : Settings → Functions → Compatibility flags → ajouter nodejs_compat en Production et Preview → redéployer.

Erreur 2 : build OK mais 404

  • Logs OK, xxx.pages.dev en 404, ou seule la home fonctionne

Causes : Edge Runtime absent ou mauvais dossier de sortie.

Solutions :

  1. runtime = 'edge' partout où c’est requis
  2. Sortie .worker-next (adaptateur) ou out (statique)
  3. Export statique : _redirects si besoin

Erreur 3 : FinalizationRegistry is not defined

Cause : Compatibility Date trop ancienne.

Solution : mettre la date à 2024-09-23 ou plus récent → redéployer.

Erreur 4 : build trop long ou échec

  • Plus de 10 minutes ou « Build exceeded maximum duration »

Causes : Turbopack (--turbo) ou projet trop lourd.

Solutions :

  1. Build command : npx @opennextjs/cloudflare sans --turbo
  2. npm prune
  3. Envisager l’export statique si possible

Erreur 5 : Image Optimization

Error: Image Optimization using Next.js' default loader is not compatible with `output: 'export'`.

Solution :

module.exports = {
  images: {
    unoptimized: true,
  },
}

Alternatives : Cloudflare Images, CDN tiers (Cloudinary), compression manuelle.


Gestion avancée des variables d’environnement

Trois environnements

EnvironnementDéclencheurUsage
Productionpush branche principale (ex. main)Utilisateurs finaux
Previewautre branche ou PRTests
DevelopmentlocalVotre machine uniquement

Dashboard

Settings → Environment variables — onglets Production et Preview.

Recommandations :

  1. Production (vraies clés) : type Secret
  2. Preview (clés de test) : Plain text possible

Fichiers locaux

my-project/
├── .env.local          # local, non versionné
├── .env.example        # modèle versionné
├── .gitignore

Exemple .env.local :

VITE_API_BASE_URL=http://localhost:3000/api
VITE_API_KEY=local-dev-key
VITE_ENABLE_DEBUG=true
VITE_ENABLE_ANALYTICS=false
VITE_GOOGLE_ANALYTICS_ID=G-XXXXXXXXXX

.env.example :

VITE_API_BASE_URL=your-api-url-here
VITE_API_KEY=your-api-key-here
VITE_ENABLE_DEBUG=false
VITE_ENABLE_ANALYTICS=true

Ne pas committer .env.local ; versionner .env.example ; .gitignore : .env*.local.

Tableau des préfixes

FrameworkClientServeur
ViteVITE_sans préfixe (invisible au navigateur)
CRAREACT_APP_
Vue CLIVUE_APP_
Next.jsNEXT_PUBLIC_sans préfixe

Astuce : préfixe si lecture navigateur ; pas de préfixe pour secrets serveur uniquement.

Variables inactives : checklist

  1. Préfixe — Vite avec REACT_APP_ ? Next client sans NEXT_PUBLIC_ ?
  2. Redéploiement après changement
  3. Bon environnement (Production vs Preview)
  4. Logs — les Secret masquent la valeur
  5. Syntaxe code
// ❌ Vite
const apiUrl = process.env.VITE_API_URL;
// ✅ Vite
const apiUrl = import.meta.env.VITE_API_URL;

Astuces et bonnes pratiques

Domaine personnalisé

  1. Projet → Custom domainsSet up a custom domain → ex. blog.example.com
  2. DNS : CNAME auto si domaine chez Cloudflare, sinon :
CNAME  blog  your-project.pages.dev
  1. Certificat SSL gratuit (souvent 5–10 min). HTTPS automatique.

Preview Deployments

Push sur une branche non principale ou PR → environnement de preview automatique.

git checkout -b feature/new-button
git add .
git commit -m "Add new button"
git push origin feature/new-button

Lien du type https://abc123.your-project.pages.dev — test sans toucher la production.

Cache de build

  1. pnpm (souvent plus rapide) :
echo "package-manager=pnpm" > .npmrc
  1. Build command : pnpm install && pnpm build
  2. npm prune pour alléger les deps

Chez moi : ~5 min → ~2 min après passage à pnpm.

Headers personnalisés

Fichier _headers à la racine :

/*
  X-Frame-Options: DENY
  X-Content-Type-Options: nosniff
  Referrer-Policy: no-referrer-when-downgrade
/static/*
  Cache-Control: public, max-age=31536000, immutable
/api/*
  Cache-Control: no-cache

Redéployez pour appliquer.


Synthèse

Trois idées centrales :

1. Connaître votre build

  • Commande ? (souvent npm run build)
  • Sortie ? (Vite dist, CRA build, Next selon le mode)
  • Variables ? (préfixes)

2. Pièges fréquents

  • Next.js : flag nodejs_compat
  • Préfixes (VITE_, NEXT_PUBLIC_, etc.)
  • SPA : fichier _redirects

3. Preview avant production

  • Tester sur une branche
  • Fusionner après validation

Une fois configuré, un simple git push suffit. Le trafic illimité gratuit enlève beaucoup de stress sur les petits projets.

En cas de problème : section erreurs ci-dessus, logs de build, documentation Cloudflare Pages.

Prochaines étapes :

  • Déployer votre premier projet
  • Lier un domaine personnalisé
  • Essayer les Preview Deployments

Des questions en commentaire — bon déploiement !

Déployer React/Vue/Next.js sur Cloudflare Pages

De la préparation à la configuration, variables d’environnement et cinq erreurs courantes, avec focus nodejs_compat pour Next.js

Estimated time: PT30M

  1. 1

    Step 1: Préparation et choix de Cloudflare Pages

    Créer un compte Cloudflare :
  2. 2

    Step 2: Déployer React (Vite et CRA)

    Checklist Cloudflare Pages :
  3. 3

    Step 3: • Framework preset

    None
  4. 4

    Step 4: • Build command

    npm run build
  5. 5

    Step 5: • Build output directory

    dist
  6. 6

    Step 6: • Root

    /
  7. 7

    Step 7: • Variables

    VITE_*
  8. 8

    Step 8: • Framework preset

    Create React App
  9. 9

    Step 9: • Build command

    npm run build
  10. 10

    Step 10: • Build output directory

    build
  11. 11

    Step 11: • Variables

    REACT_APP_*
  12. 12

    Step 12: Attention

    dist (Vite) vs build (CRA)
  13. 13

    Step 13: • Vite

    VITE_*
  14. 14

    Step 14: • CRA

    REACT_APP_*
  15. 15

    Step 15: • Vite

    import.meta.env.VITE_API_URL
  16. 16

    Step 16: • CRA

    process.env.REACT_APP_API_URL
  17. 17

    Step 17: • React Router

    _redirects dans public
  18. 18

    Step 18: • Contenu

    /* /index.html 200
  19. 19

    Step 19: Déployer Vue (Vite et Vue CLI)

    Configuration :
  20. 20

    Step 20: • Framework preset

    None
  21. 21

    Step 21: • Build

    npm run build
  22. 22

    Step 22: • Sortie

    dist
  23. 23

    Step 23: • Variables

    VITE_*
  24. 24

    Step 24: • Framework preset

    Vue
  25. 25

    Step 25: • Sortie

    dist
  26. 26

    Step 26: • Variables

    VUE_APP_*
  27. 27

    Step 27: Rappel

    les deux sortent dans dist ; préfixes différents
  28. 28

    Step 28: • Vite+Vue

    .env.local VITE_*
  29. 29

    Step 29: • Code

    import.meta.env.VITE_API_BASE_URL
  30. 30

    Step 30: • Vue CLI

    .env.production VUE_APP_*
  31. 31

    Step 31: • Code

    process.env.VUE_APP_API_BASE_URL
  32. 32

    Step 32: • _redirects

    /* /index.html 200
  33. 33

    Step 33: • Assets 404

    publicPath/base à ’/’
  34. 34

    Step 34: • Unknown file extension

    NODE_VERSION=18
  35. 35

    Step 35: Déployer Next.js (statique et SSR)

    Spécificités :
  36. 36

    Step 36: • next.config.js

    output export, images unoptimized
  37. 37

    Step 37: Erreurs Next.js et variables avancées

    Erreur 1 nodejs_compat / 500 :
  38. 38

    Step 38: Variables avancées et bonnes pratiques

    Trois environnements :
  39. 39

    Step 39: • Production

    Secret pour vraies clés
  40. 40

    Step 40: • Preview

    Plain text pour tests

FAQ

Pourquoi Cloudflare Pages plutôt que Vercel ou Netlify ? Quels avantages de l'offre gratuite ?
L'offre gratuite de Cloudflare Pages est vraiment intéressante.

Comparaison :
• Trafic illimité en gratuit (Vercel et Netlify : 100 Go/mois)
• 500 builds/mois (Vercel : 6000 minutes/mois, Netlify : 300 minutes/mois)
• Projets commerciaux supportés (Vercel : limites, Netlify : oui)
• Plus de 300 nœuds CDN (répartition mondiale, HTTPS automatique)

Le trafic illimité est un gros plus : plusieurs projets perso chez moi tournent sur CF Pages sans stress de quota.

Cas adaptés :
• Blog perso, portfolio
• Projets frontend moyens (SPA, sites statiques)
• Besoin d'accélération mondiale
• Trafic imprévisible

Moins adapté :
• Grosses apps Next.js avec SSR complexe (support Next.js moins abouti que Vercel)
• Builds très fréquents (limite 500 builds/mois)
• Fonctions propres à Vercel (ex. Edge Middleware)
Quelles différences de configuration build entre React/Vue/Next.js ? Quel répertoire de sortie ?
React :

Projet Vite :
• Framework preset : None (CF Pages détecte souvent tout seul)
• Build command : npm run build
• Build output directory : dist
• Root directory : / (par défaut)
• Variables d'environnement : préfixe VITE_*

Projet CRA :
• Framework preset : Create React App (remplissage auto)
• Build command : npm run build
• Build output directory : build
• Root directory : / (par défaut)
• Variables : préfixe REACT_APP_*

Attention : l'erreur la plus fréquente est le mauvais dossier de sortie — dist pour Vite, build pour CRA.

Vue :

Vite :
• Framework preset : None
• Build command : npm run build
• Build output directory : dist
• Variables : VITE_*

Vue CLI :
• Framework preset : Vue
• Build command : npm run build
• Build output directory : dist
• Variables : VUE_APP_*

Vue CLI et Vite sortent tous deux dans dist ; seuls les préfixes diffèrent (VITE_ vs VUE_APP_).

Next.js :

Export statique :
• Framework preset : Next.js (Static HTML Export)
• Build command : npm run build
• Build output directory : out

Mode SSR :
• Framework preset : None
• Build command : npx @opennextjs/cloudflare
• Build output directory : .worker-next
Quels préfixes pour les variables d'environnement selon le framework ?
React :
• Vite : préfixe obligatoire VITE_ (ex. VITE_API_URL, VITE_API_KEY)
• CRA : REACT_APP_ (ex. REACT_APP_API_URL)

Vue :
• Vite+Vue : VITE_ (ex. VITE_API_BASE_URL)
• Vue CLI : VUE_APP_ (ex. VUE_APP_API_BASE_URL)

Next.js :
• Côté client : NEXT_PUBLIC_ (ex. NEXT_PUBLIC_API_URL)
• Côté serveur : sans préfixe (ex. DATABASE_URL, API_SECRET)

Tableau rapide :
• Vite (tout framework) : VITE_ côté client ; pas de préfixe côté serveur (inaccessible au navigateur)
• CRA : REACT_APP_ uniquement
• Vue CLI : VUE_APP_
• Next.js : NEXT_PUBLIC_ client ; sans préfixe serveur

Astuce :
• Variable lue dans le navigateur → préfixe obligatoire
• Secret serveur uniquement → pas de préfixe

Dans le code :
• Vite : import.meta.env.VITE_API_URL
• CRA : process.env.REACT_APP_API_URL
• Vue CLI : process.env.VUE_APP_API_BASE_URL
• Next.js client : process.env.NEXT_PUBLIC_API_URL
• Next.js serveur : process.env.DATABASE_URL
Configuration clé pour Next.js sur Cloudflare Pages ? Comment corriger l'erreur nodejs_compat ?
Spécificités Next.js :
• Cloudflare Pages n'est pas pensé uniquement pour Next.js (contrairement à Vercel)
• Deux voies : export statique (simple) ou SSR (adaptateur)
• SSR : utiliser @opennextjs/cloudflare (@cloudflare/next-on-pages est obsolète)

Export statique :
• next.config.js :
- output: 'export'
- images: { unoptimized: true } (pas d'Image Optimization Next sur CF Pages)
• Pages :
- Framework preset : Next.js (Static HTML Export)
- Build command : npm run build
- Build output directory : out

Limites : pas d'API Routes, pas d'ISR, pas de Server Components, pas de SSR sur routes dynamiques.

Mode SSR :
• npm install @opennextjs/cloudflare
• next.config.js sans output: 'export', images unoptimized: true
• Pages :
- Framework preset : None
- Build command : npx @opennextjs/cloudflare
- Build output directory : .worker-next

Compatibility Flags (piège fréquent) :
• Projet → Settings → Functions
• Compatibility flags → Configure Production compatibility flag
• Ajouter nodejs_compat
• Compatibility Date au moins 2024-09-23

Production et Preview doivent avoir le flag ; sinon erreur 500 après déploiement.

Edge Runtime :
• API Routes ou Server Components : déclarer le runtime edge
- App Router : export const runtime = 'edge'
- Pages Router : export const config = { runtime: 'edge' }
• Tous les fichiers exécutés côté serveur doivent l'inclure.
Comment corriger le 404 des routes SPA ? Next.js affiche 404 après déploiement ?
React SPA :
• Avec React Router, un refresh peut renvoyer 404 : le serveur cherche un fichier au lieu de index.html

Solution :
• Fichier _redirects dans public : /* /index.html 200
• Une ligne : toutes les URLs servent index.html avec statut 200

Vue Router :
• Mode History : même redirection obligatoire

Méthode 1 (recommandée) : _redirects dans public
Méthode 2 (Vite) : base: '/' dans vite.config.js si déploiement hors racine

Next.js 404 après succès du build :
• Build OK mais xxx.pages.dev en 404, ou seule la home fonctionne
• Causes : Edge Runtime manquant ou mauvais Build output directory

Solutions :
• Vérifier runtime = 'edge' sur API Routes et Server Components
• Sortie .worker-next (adaptateur) ou out (export statique)
• Export statique : vérifier _redirects si besoin
Variables d'environnement inactives : comment déboguer ? Production, Preview et local ?
Étapes de dépannage :

1) Préfixe correct ?
• Vite avec REACT_APP_ au lieu de VITE_ ?
• Client Next.js sans NEXT_PUBLIC_ ?

2) Redéploiement :
• Toute modification de variable exige un nouveau déploiement
• Petit commit Git ou Retry deployment dans le Dashboard

3) Bon environnement ?
• Variable Production mais URL Preview (ou l'inverse) ?

4) Logs de build :
• Chercher le nom de la variable
• Les Secret n'affichent pas la valeur

5) Référence dans le code :
• Erreur Vite : process.env.VITE_API_URL
• Correct : import.meta.env.VITE_API_URL

Trois environnements Pages :
• Production (branche principale, ex. main)
• Preview (autres branches ou PR)
• Development (local uniquement)

Dashboard : Settings → Environment variables — onglets Production et Preview.

Recommandations :
• Production : type Secret pour clés réelles (ex. API_KEY=prod-key-12345)
• Preview : Plain text possible pour clés de test (ex. API_KEY=test-key-67890)

Local :
• .env.local (non versionné)
• .env.example (modèle versionné)
• .gitignore : .env*.local

Rappels :
• Ne pas committer .env.local
• Committer .env.example pour l'équipe

10 min de lecture · Publié le: 1 déc. 2025 · Mis à jour le: 27 juil. 2026

Commentaires

Connectez-vous avec GitHub pour laisser un commentaire

Easton BlogEaston Blog