Débogage
Cette documentation explique comment déboguer votre code frontend et backend Next.js avec le support complet des source maps, en utilisant soit le débogueur VS Code, soit Chrome DevTools.
Tout débogueur capable de se connecter à Node.js peut également être utilisé pour déboguer une application Next.js. Vous trouverez plus de détails dans le Guide de débogage de Node.js.
Débogage avec VS Code
Créez un fichier nommé .vscode/launch.json
à la racine de votre projet avec le contenu suivant :
{
"version": "0.2.0",
"configurations": [
{
"name": "Next.js: debug server-side",
"type": "node-terminal",
"request": "launch",
"command": "npm run dev"
},
{
"name": "Next.js: debug client-side",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000"
},
{
"name": "Next.js: debug full stack",
"type": "node-terminal",
"request": "launch",
"command": "npm run dev",
"serverReadyAction": {
"pattern": "- Local:.+(https?://.+)",
"uriFormat": "%s",
"action": "debugWithChrome"
}
}
]
}
npm run dev
peut être remplacé par yarn dev
si vous utilisez Yarn ou pnpm dev
si vous utilisez pnpm.
Si vous modifiez le numéro de port sur lequel votre application démarre, remplacez le 3000
dans http://localhost:3000
par le port que vous utilisez.
Si vous exécutez Next.js depuis un répertoire autre que la racine (par exemple, si vous utilisez Turborepo), vous devez ajouter cwd
aux tâches de débogage côté serveur et full stack. Par exemple, "cwd": "${workspaceFolder}/apps/web"
.
Allez maintenant dans le panneau Debug (Ctrl+Shift+D
sur Windows/Linux, ⇧+⌘+D
sur macOS), sélectionnez une configuration de lancement, puis appuyez sur F5
ou sélectionnez Debug: Start Debugging dans la Palette de commandes pour démarrer votre session de débogage.
Utilisation du débogueur dans Jetbrains WebStorm
Cliquez sur le menu déroulant listant les configurations d'exécution, puis cliquez sur Edit Configurations...
. Créez une configuration de débogage Javascript Debug
avec http://localhost:3000
comme URL. Personnalisez selon vos préférences (par exemple, navigateur pour le débogage, enregistrer comme fichier de projet), puis cliquez sur OK
. Exécutez cette configuration de débogage, et le navigateur sélectionné devrait s'ouvrir automatiquement. À ce stade, vous devriez avoir 2 applications en mode débogage : l'application node NextJS et l'application client/navigateur.
Débogage avec Chrome DevTools
Code côté client
Démarrez votre serveur de développement comme d'habitude en exécutant next dev
, npm run dev
ou yarn dev
. Une fois le serveur démarré, ouvrez http://localhost:3000
(ou votre URL alternative) dans Chrome. Ensuite, ouvrez les Outils de développement de Chrome (Ctrl+Shift+J
sur Windows/Linux, ⌥+⌘+I
sur macOS), puis allez dans l'onglet Sources.
Désormais, chaque fois que votre code côté client atteint une instruction debugger
, l'exécution du code sera suspendue et ce fichier apparaîtra dans la zone de débogage. Vous pouvez également appuyer sur Ctrl+P
sur Windows/Linux ou ⌘+P
sur macOS pour rechercher un fichier et définir des points d'arrêt manuellement. Notez que lors de cette recherche, vos fichiers sources auront des chemins commençant par webpack://_N_E/./
.
Code côté serveur
Pour déboguer le code serveur Next.js avec Chrome DevTools, vous devez passer le flag --inspect
au processus Node.js sous-jacent :
NODE_OPTIONS='--inspect' next dev
Si vous utilisez npm run dev
ou yarn dev
, vous devez mettre à jour le script dev
dans votre package.json
:
{
"scripts": {
"dev": "NODE_OPTIONS='--inspect' next dev"
}
}
Le lancement du serveur de développement Next.js avec le flag --inspect
ressemblera à ceci :
Debugger listening on ws://127.0.0.1:9229/0cf90313-350d-4466-a748-cd60f4e47c95
For help, see: https://nodejs.org/en/docs/inspector
ready - started server on 0.0.0.0:3000, url: http://localhost:3000
Notez que l'exécution de
NODE_OPTIONS='--inspect' npm run dev
ouNODE_OPTIONS='--inspect' yarn dev
ne fonctionnera pas. Cela essaierait de démarrer plusieurs débogueurs sur le même port : un pour le processus npm/yarn et un pour Next.js. Vous obtiendriez alors une erreur commeStarting inspector on 127.0.0.1:9229 failed: address already in use
dans votre console.
Une fois le serveur démarré, ouvrez un nouvel onglet dans Chrome et visitez chrome://inspect
, où vous devriez voir votre application Next.js dans la section Cibles distantes. Cliquez sur inspecter sous votre application pour ouvrir une fenêtre DevTools séparée, puis allez dans l'onglet Sources.
Le débogage du code serveur fonctionne ici comme le débogage du code client avec Chrome DevTools, sauf que lorsque vous recherchez des fichiers ici avec Ctrl+P
ou ⌘+P
, vos fichiers sources auront des chemins commençant par webpack://{nom-de-l'application}/./
(où {nom-de-l'application}
sera remplacé par le nom de votre application selon votre fichier package.json
).
Débogage sur Windows
Les utilisateurs Windows peuvent rencontrer un problème lors de l'utilisation de NODE_OPTIONS='--inspect'
car cette syntaxe n'est pas supportée sur les plateformes Windows. Pour contourner ce problème, installez le package cross-env
comme dépendance de développement (-D
avec npm
et yarn
) et remplacez le script dev
par ce qui suit.
{
"scripts": {
"dev": "cross-env NODE_OPTIONS='--inspect' next dev"
}
}
cross-env
définira la variable d'environnement NODE_OPTIONS
quelle que soit la plateforme (y compris Mac, Linux et Windows) et vous permettra de déboguer de manière cohérente sur tous les appareils et systèmes d'exploitation.
Bon à savoir : Assurez-vous que Windows Defender est désactivé sur votre machine. Ce service externe vérifie chaque fichier lu, ce qui a été signalé comme augmentant considérablement le temps de Fast Refresh avec
next dev
. Il s'agit d'un problème connu, non lié à Next.js, mais qui affecte le développement avec Next.js.
Plus d'informations
Pour en savoir plus sur l'utilisation d'un débogueur JavaScript, consultez la documentation suivante :