{"id":54559,"date":"2022-03-17T09:58:27","date_gmt":"2022-03-17T08:58:27","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=54559&#038;preview=true&#038;preview_id=54559"},"modified":"2024-09-17T14:56:16","modified_gmt":"2024-09-17T13:56:16","slug":"deboguer-node","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/","title":{"rendered":"Comment d\u00e9boguer le code Node.js \u00e0 l&rsquo;aide de plusieurs outils"},"content":{"rendered":"<p><a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-node-js\/\">Node.js est un moteur d&rsquo;ex\u00e9cution JavaScript<\/a> bas\u00e9 sur le m\u00eame moteur V8 que celui utilis\u00e9 dans le navigateur Chrome de Google. Il est souvent utilis\u00e9 pour cr\u00e9er des applications multi_plateformes c\u00f4t\u00e9 serveur et terminal. <a href=\"https:\/\/kinsta.com\/fr\/blog\/applications-node-js\/\">Node.js est devenu de plus en plus populaire<\/a> au cours de la derni\u00e8re d\u00e9cennie parce qu&rsquo;il est <a href=\"https:\/\/kinsta.com\/fr\/blog\/comment-installer-node-js\/\">facile \u00e0 installer<\/a>, pratique \u00e0 utiliser, rapide et qu&rsquo;il permet aux d\u00e9veloppeurs web c\u00f4t\u00e9 client de <a href=\"https:\/\/kinsta.com\/fr\/blog\/node-js-developpeur-salaire\/\">mettre \u00e0 profit leurs comp\u00e9tences ailleurs<\/a>.<\/p>\n<p>Cependant, le d\u00e9veloppement de logiciels reste une t\u00e2che complexe, et votre code Node.js \u00e9chouera \u00e0 un moment donn\u00e9. Ce tutoriel pr\u00e9sente divers outils pour aider \u00e0 d\u00e9boguer les applications et trouver la cause d&rsquo;un probl\u00e8me.<\/p>\n<p>Plongeons-y.<\/p>\n<h3>Consultez notre guide vid\u00e9o sur le <a href=\"https:\/\/www.youtube.com\/watch?v=Kz8EB9Lhul8\">d\u00e9bogage du code Node.js<\/a><\/h3>\n<kinsta-video src=\"https:\/\/www.youtube.com\/watch?v=Kz8EB9Lhul8\"><\/kinsta-video>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p><br \/>\n<a href=\"https:\/\/deno.land\/\" target=\"_blank\" rel=\"noopener noreferrer\">Deno<\/a> est un moteur d&rsquo;ex\u00e9cution JavaScript alternatif. Il est similaire \u00e0 Node.js mais plus r\u00e9cent, et il aplanit certaines des fissures et des incoh\u00e9rences. Les outils et informations ci-dessous peuvent souvent \u00eatre appliqu\u00e9s aux applications Deno et Node.js.<br \/><\/p>\n<\/aside>\n\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Vue globale du d\u00e9bogage<\/h2>\n<p>\u00ab D\u00e9bogage \u00bb est le nom donn\u00e9 aux diff\u00e9rents moyens de corriger les d\u00e9fauts des logiciels. La correction d&rsquo;un bogue est souvent simple. Trouver la cause du bogue peut \u00eatre consid\u00e9rablement plus complexe et entra\u00eener de nombreuses heures de r\u00e9flexion.<\/p>\n<p>Les sections suivantes d\u00e9crivent trois types g\u00e9n\u00e9raux d&rsquo;erreurs que vous rencontrerez.<\/p>\n<h3>Erreurs de syntaxe<\/h3>\n<p>Votre code ne respecte pas les r\u00e8gles du langage &#8211; par exemple, lorsque vous omettez un crochet fermant ou que vous \u00e9crivez mal une instruction telle que <code>console.lag(x)<\/code>.<\/p>\n<p>Un bon \u00e9diteur de code peut vous aider \u00e0 rep\u00e9rer les probl\u00e8mes courants :<\/p>\n<ul>\n<li>Code couleur pour les d\u00e9clarations valides ou non valides<\/li>\n<li>V\u00e9rification du type des variables<\/li>\n<li>Compl\u00e9tion automatique des noms de fonctions et de variables<\/li>\n<li>Mise en \u00e9vidence des parenth\u00e8ses correspondantes<\/li>\n<li>Mise en retrait automatique des blocs de code<\/li>\n<li>D\u00e9tection du code inaccessible<\/li>\n<li>Refactorisation des fonctions d\u00e9sordonn\u00e9es<\/li>\n<\/ul>\n<p>Les <a href=\"https:\/\/kinsta.com\/fr\/blog\/editeurs-html-gratuits\/\">\u00e9diteurs gratuits<\/a> tels que <a href=\"https:\/\/code.visualstudio.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">VS Code<\/a> et <a href=\"https:\/\/atom.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Atom<\/a> offrent un excellent support pour Node.js, JavaScript et TypeScript (qui se transpose en JavaScript). Les probl\u00e8mes de syntaxe de base peuvent g\u00e9n\u00e9ralement \u00eatre rep\u00e9r\u00e9s avant que vous n&rsquo;enregistriez et ne testiez votre code.<\/p>\n<p>Un linter de code comme <a href=\"https:\/\/eslint.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">ESLint<\/a> signalera \u00e9galement les erreurs de syntaxe, les mauvaises indentations et les variables non d\u00e9clar\u00e9es. ESLint est un outil Node.js que vous pouvez installer globalement avec :<\/p>\n<pre><code class=\"language-bash\">npm i eslint -g<\/code><\/pre>\n<p>Vous pouvez v\u00e9rifier les fichiers JavaScript \u00e0 partir de la ligne de commande en utilisant :<\/p>\n<pre><code class=\"language-bash\">eslint mycode.js<\/code><\/pre>\n<p>&#8230;mais il est plus facile d&rsquo;utiliser une extension d&rsquo;\u00e9diteur tel que <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=dbaeumer.vscode-eslint\" target=\"_blank\" rel=\"noopener noreferrer\">ESLint pour VS Code<\/a> ou <a href=\"https:\/\/atom.io\/packages\/linter-eslint\" target=\"_blank\" rel=\"noopener noreferrer\">linter-eslint pour Atom<\/a>, qui valide automatiquement le code au fur et \u00e0 mesure que vous le saisissez :<\/p>\n<figure id=\"attachment_115102\" aria-describedby=\"caption-attachment-115102\" style=\"width: 913px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-115102 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/02\/eslint-vscode.png\" alt=\"ESlint dans VS Code.\" width=\"913\" height=\"564\"><figcaption id=\"caption-attachment-115102\" class=\"wp-caption-text\">ESlint dans VS Code.<\/figcaption><\/figure>\n<h3>Erreurs de logique<\/h3>\n<p>Votre code s&rsquo;ex\u00e9cute mais ne fonctionne pas comme vous l&rsquo;attendez. Par exemple, un utilisateur n&rsquo;est pas d\u00e9connect\u00e9 lorsqu&rsquo;il le demande ; un rapport affiche des chiffres incorrects ; les donn\u00e9es ne sont pas enti\u00e8rement enregistr\u00e9es dans une base de donn\u00e9es ; etc.<\/p>\n<p>Les erreurs logiques peuvent \u00eatre caus\u00e9es par :<\/p>\n<ul>\n<li>Une utilisation de la mauvaise variable<\/li>\n<li>Des conditions incorrectes, par exemple <code>if (a &gt; 5)<\/code> plut\u00f4t que <code>if (a &lt; 5)<\/code><\/li>\n<li>Des calculs qui ne tiennent pas compte de la pr\u00e9c\u00e9dence des op\u00e9rateurs, par exemple <code>1+2*3<\/code> donne 7 au lieu de 9.<\/li>\n<\/ul>\n\n<h3>Erreurs de moteur d&rsquo;ex\u00e9cution (ou d&rsquo;ex\u00e9cution)<\/h3>\n<p>Une erreur ne devient \u00e9vidente que lorsque l&rsquo;application est ex\u00e9cut\u00e9e, ce qui conduit souvent \u00e0 un crash. Les erreurs d&rsquo;ex\u00e9cution peuvent \u00eatre caus\u00e9es par :<\/p>\n<ul>\n<li>Diviser par une variable qui a \u00e9t\u00e9 mise \u00e0 z\u00e9ro<\/li>\n<li>Tenter d&rsquo;acc\u00e9der \u00e0 un \u00e9l\u00e9ment de tableau qui n&rsquo;existe pas<\/li>\n<li>Tenter d&rsquo;\u00e9crire dans un fichier en lecture seule<\/li>\n<\/ul>\n<p>Les erreurs de logique et d&rsquo;ex\u00e9cution sont plus difficiles \u00e0 rep\u00e9rer, bien que les techniques de d\u00e9veloppement suivantes puissent aider :<\/p>\n<ol>\n<li><strong>Utilisez le d\u00e9veloppement pilot\u00e9 par les tests :<\/strong> Le TTD ou Test-Driven Development vous encourage \u00e0 \u00e9crire des tests avant le d\u00e9veloppement d&rsquo;une fonction, par exemple : X est renvoy\u00e9 par la fonctionY lorsque Z est pass\u00e9 en param\u00e8tre. Ces tests sont ex\u00e9cut\u00e9s lors du d\u00e9veloppement initial et des mises \u00e0 jour ult\u00e9rieures pour s&rsquo;assurer que le code continue \u00e0 fonctionner comme pr\u00e9vu.<\/li>\n<li><strong>Utilisez un syst\u00e8me de suivi des probl\u00e8mes : <\/strong>Il n&rsquo;y a rien de pire qu&rsquo;un e-mail affirmant <i>\u00ab Votre logiciel ne fonctionne pas<\/i> <em>!<\/em> \u00bb Les syst\u00e8mes de suivi des probl\u00e8mes vous permettent d&rsquo;enregistrer des probl\u00e8mes sp\u00e9cifiques, de documenter les \u00e9tapes de reproduction, de d\u00e9terminer les priorit\u00e9s, d&rsquo;affecter des d\u00e9veloppeurs et de suivre la progression des corrections.<\/li>\n<li><strong>Utilisez le contr\u00f4le des sources : <\/strong>Un syst\u00e8me de contr\u00f4le de la source <a href=\"https:\/\/kinsta.com\/fr\/blog\/git-vs-github\/\">tel que Git<\/a> vous aidera \u00e0 sauvegarder le code, \u00e0 g\u00e9rer les r\u00e9visions et \u00e0 identifier l&rsquo;endroit o\u00f9 un bogue a \u00e9t\u00e9 introduit. Les d\u00e9p\u00f4ts en ligne, notamment <a href=\"https:\/\/kinsta.com\/fr\/blog\/base-de-connaissances-github\/\">Github<\/a> et <a href=\"https:\/\/kinsta.com\/fr\/blog\/bitbucket-vs-github\/\">Bitbucket,<\/a> offrent un espace et des outils gratuits pour les projets de petite taille ou \u00e0 code open source.<\/li>\n<\/ol>\n<p>Vous rencontrerez toujours des bogues de Node.js, mais les sections suivantes d\u00e9crivent les moyens de localiser cette erreur insaisissable.<\/p>\n<h2>D\u00e9finissez les variables d&rsquo;environnement Node.js appropri\u00e9es<\/h2>\n<p>Les variables d&rsquo;environnement d\u00e9finies dans le syst\u00e8me d&rsquo;exploitation h\u00f4te peuvent contr\u00f4ler les r\u00e9glages des applications et des modules Node.js. La plus courante est <code>NODE_ENV<\/code>, qui est g\u00e9n\u00e9ralement d\u00e9finie sur le d\u00e9veloppement lors du d\u00e9bogage ou sur la production lors de l&rsquo;ex\u00e9cution sur un serveur en direct. Configurez les variables d&rsquo;environnement sur macOS ou Linux avec la <a href=\"https:\/\/kinsta.com\/fr\/blog\/commandes-linux\/\">commande<\/a> :<\/p>\n<pre><code class=\"language-js\">NODE_ENV=development<\/code><\/pre>\n<p>ou avec l&rsquo;invite de commande (classique) de Windows :<\/p>\n<pre><code class=\"language-js\">set NODE_ENV=development<\/code><\/pre>\n<p>ou Windows Powershell :<\/p>\n<pre><code class=\"language-js\">$env:NODE_ENV=\"development\"<\/code><\/pre>\n<p>Dans le c\u00e9l\u00e8bre <a href=\"http:\/\/expressjs.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">framework Express.js<\/a>, le fait de d\u00e9finir NODE_ENV sur le d\u00e9veloppement d\u00e9sactive la mise en cache des fichiers de mod\u00e8le et produit des messages d&rsquo;erreur verbeux, ce qui peut \u00eatre utile lors du d\u00e9bogage. D&rsquo;autres modules peuvent offrir des fonctionnalit\u00e9s similaires, et vous pouvez ajouter une condition NODE_ENV \u00e0 vos applications, par exemple.<\/p>\n<pre><code class=\"language-js\">\/\/ running in development mode?\nconst devMode = (process.env.NODE_ENV !== 'production');\n\nif (devMode) {\n  console.log('application is running in development mode');\n}\n<\/code><\/pre>\n<p>Vous pouvez \u00e9galement utiliser la m\u00e9thode <a href=\"https:\/\/nodejs.org\/api\/util.html#utildebuglogsection-callback\" target=\"_blank\" rel=\"noopener noreferrer\">util.debuglog<\/a> de Node pour \u00e9mettre des messages d&rsquo;erreur de mani\u00e8re conditionnelle, par exemple.<\/p>\n<pre><code class=\"language-js\">import { debuglog } from 'util';\nconst myappDebug = debuglog('myapp');\nmyappDebug('log something');\n<\/code><\/pre>\n<p>Cette application ne produira le message de journal que lorsque NODE_DEBUG est d\u00e9fini sur myapp ou un caract\u00e8re g\u00e9n\u00e9rique tel que * ou my*.<\/p>\n<h2>Utiliser les options de ligne de commande de Node.js<\/h2>\n<p>Les scripts Node sont g\u00e9n\u00e9ralement lanc\u00e9s avec node suivi du nom du script d&rsquo;entr\u00e9e :<\/p>\n<pre><code class=\"language-js\">node app.js<\/code><\/pre>\n<p>Vous pouvez \u00e9galement d\u00e9finir des <a href=\"https:\/\/nodejs.org\/api\/cli.html\" target=\"_blank\" rel=\"noopener noreferrer\">options de ligne de commande<\/a> pour contr\u00f4ler divers aspects de l&rsquo;ex\u00e9cution. Les signalements (flags) utiles pour le d\u00e9bogage incluent :<\/p>\n<ul>\n<li><code>--check<\/code><br \/>\nv\u00e9rifier la syntaxe du script sans l&rsquo;ex\u00e9cuter<\/li>\n<li><code>--trace-warnings<\/code><br \/>\nproduire une trace de pile lorsque les Promesses JavaScript ne sont pas r\u00e9solues ou rejet\u00e9es<\/li>\n<li><code>--enable-source-maps<\/code><br \/>\nafficher les cartes sources lors de l&rsquo;utilisation d&rsquo;un transpilateur tel que TypeScript<\/li>\n<li><code>--throw-deprecation<\/code><br \/>\navertir lorsque des fonctionnalit\u00e9s d\u00e9pr\u00e9ci\u00e9es de Node.js sont utilis\u00e9es<\/li>\n<li><code>--redirect-warnings=file<\/code><br \/>\nsortir des avertissements dans un fichier plut\u00f4t que sur stderr<\/li>\n<li><code>--trace-exit<\/code><br \/>\nafficher une trace de la pile lorsque <code>process.exit()<\/code> est appel\u00e9.<\/li>\n<\/ul>\n<h2>Sortir des messages sur la console<\/h2>\n<p>La sortie d&rsquo;un message dans la console est l&rsquo;une des fa\u00e7ons les plus simples de d\u00e9boguer une application Node.js :<\/p>\n<pre><code class=\"language-js\">console.log(`someVariable: ${ someVariable }`);<\/code><\/pre>\n<p>Peu de d\u00e9veloppeurs r\u00e9alisent qu&rsquo;il existe de nombreuses autres m\u00e9thodes de console :<\/p>\n<div class=\"responsive-table\">\n<table>\n<thead>\n<tr>\n<th>M\u00e9thode Console<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>.log(msg)<\/code><\/td>\n<td>message standard de la console<\/td>\n<\/tr>\n<tr>\n<td><code>.log('%j', obj)<\/code><\/td>\n<td>sortie de l&rsquo;objet sous forme de cha\u00eene JSON compacte<\/td>\n<\/tr>\n<tr>\n<td><code>.dir(obj, opt)<\/code><\/td>\n<td>impression des propri\u00e9t\u00e9s de l&rsquo;objet<\/td>\n<\/tr>\n<tr>\n<td><code>.table(obj)<\/code><\/td>\n<td>sortie des tableaux et des objets sous forme de tableau<\/td>\n<\/tr>\n<tr>\n<td><code>.error(msg)<\/code><\/td>\n<td>un message d&rsquo;erreur<\/td>\n<\/tr>\n<tr>\n<td><code>.count(label)<\/code><\/td>\n<td>incr\u00e9menter un compteur nomm\u00e9 et le sortir<\/td>\n<\/tr>\n<tr>\n<td><code>.countReset(label)<\/code><\/td>\n<td>r\u00e9initialisation d&rsquo;un compteur nomm\u00e9<\/td>\n<\/tr>\n<tr>\n<td><code>.group(label)<\/code><\/td>\n<td>indenter un groupe de messages<\/td>\n<\/tr>\n<tr>\n<td><code>.groupEnd(label)<\/code><\/td>\n<td>terminer un groupe<\/td>\n<\/tr>\n<tr>\n<td><code>.time(label)<\/code><\/td>\n<td>d\u00e9marrer une minuterie nomm\u00e9e<\/td>\n<\/tr>\n<tr>\n<td><code>.timeLog(label)<\/code><\/td>\n<td>rapporter le temps \u00e9coul\u00e9<\/td>\n<\/tr>\n<tr>\n<td><code>.timeEnd(label)<\/code><\/td>\n<td>arr\u00eater une minuterie nomm\u00e9e<\/td>\n<\/tr>\n<tr>\n<td><code>.trace()<\/code><\/td>\n<td>afficher une trace de la pile (une liste de tous les appels de fonction effectu\u00e9s)<\/td>\n<\/tr>\n<tr>\n<td><code>.clear()<\/code><\/td>\n<td>effacer la console<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><code>console.log()<\/code> accepte \u00e9galement une liste de valeurs s\u00e9par\u00e9es par des virgules :<\/p>\n<pre><code class=\"language-js\">let x = 123;\nconsole.log('x:', x);\n\/\/ x: 123\n<\/code><\/pre>\n<p>&#8230;bien que la d\u00e9structuration ES6 offre un r\u00e9sultat similaire avec moins d&rsquo;efforts :<\/p>\n<pre><code class=\"language-js\">console.log({ x });\n\/\/ { x: 123 }\n<\/code><\/pre>\n<p>La commande <strong>console.dir()<\/strong> imprime les propri\u00e9t\u00e9s des objets de la m\u00eame mani\u00e8re que <a href=\"https:\/\/nodejs.org\/api\/util.html#utilinspectobject-options\" target=\"_blank\" rel=\"noopener noreferrer\">util.inspect()<\/a>:<\/p>\n<pre><code class=\"language-js\">console.dir(myObject, { depth: null, color: true });<\/code><\/pre>\n<h3>Controverse sur la console<\/h3>\n<p>Certains d\u00e9veloppeurs pr\u00e9tendent que vous <i>ne<\/i> devriez <i>jamais<\/i> utiliser <code>console.log()<\/code> car :<\/p>\n<ul>\n<li>Vous modifiez le code et pouvez alt\u00e9rer quelque chose ou oublier de le supprimer, et<\/li>\n<li>Ce n&rsquo;est pas n\u00e9cessaire quand il existe de meilleures options de d\u00e9bogage.<\/li>\n<\/ul>\n<p>Ne croyez pas ceux qui pr\u00e9tendent ne jamais utiliser <code>console.log()<\/code>! La journalisation est rapide et sale, mais tout le monde l&rsquo;utilise \u00e0 un moment ou \u00e0 un autre. Utilisez l&rsquo;outil ou la technique que vous pr\u00e9f\u00e9rez. La correction d&rsquo;un bogue est plus importante que la m\u00e9thode que vous adoptez pour le trouver.<\/p>\n<h2>Utilisez un syst\u00e8me de journalisation tiers<\/h2>\n<p>Les syst\u00e8mes de journalisation tiers offrent des fonctionnalit\u00e9s plus sophistiqu\u00e9es telles que les niveaux de messagerie, la verbosit\u00e9, le tri, la sortie de fichiers, le profilage, les rapports, etc. Les solutions les plus populaires sont <a href=\"https:\/\/www.npmjs.com\/package\/cabin\" target=\"_blank\" rel=\"noopener noreferrer\">cabin<\/a>, <a href=\"https:\/\/www.npmjs.com\/package\/loglevel\" target=\"_blank\" rel=\"noopener noreferrer\">loglevel<\/a>, <a href=\"https:\/\/www.npmjs.com\/package\/morgan\" target=\"_blank\" rel=\"noopener noreferrer\">morgan<\/a>, <a href=\"https:\/\/www.npmjs.com\/package\/pino\" target=\"_blank\" rel=\"noopener noreferrer\">pino<\/a>, <a href=\"https:\/\/www.npmjs.com\/package\/signale\" target=\"_blank\" rel=\"noopener noreferrer\">signale<\/a>, <a href=\"https:\/\/www.npmjs.com\/package\/storyboard\" target=\"_blank\" rel=\"noopener noreferrer\">storyboard<\/a>, <a href=\"https:\/\/www.npmjs.com\/package\/tracer\" target=\"_blank\" rel=\"noopener noreferrer\">tracer<\/a> et <a href=\"https:\/\/www.npmjs.com\/package\/winston\" target=\"_blank\" rel=\"noopener noreferrer\">winston<\/a>.<\/p>\n<h2>Utilisez l&rsquo;inspecteur V8<\/h2>\n<p>Le moteur JavaScript V8 fournit un <a href=\"https:\/\/nodejs.org\/api\/debugger.html\" target=\"_blank\" rel=\"noopener noreferrer\">client de d\u00e9bogage<\/a> que vous pouvez utiliser dans Node.js. D\u00e9marrez une application en utilisant node inspect, par exemple<\/p>\n<pre><code class=\"language-js\">node inspect app.js<\/code><\/pre>\n<p>Le d\u00e9bogueur s&rsquo;arr\u00eate \u00e0 la premi\u00e8re ligne et affiche une invite debug&gt; :<\/p>\n<pre><code class=\"language-js\">$ node inspect .\\mycode.js\n&lt; Debugger listening on ws:\/\/127.0.0.1:9229\/143e23fb\n&lt; For help, see: https:\/\/nodejs.org\/en\/docs\/inspector\n&lt;\n ok\n&lt; Debugger attached.\n&lt;\nBreak on start in mycode.js:1\n&gt; 1 const count = 10;\n  2\n  3 for (i = 0; i &lt; counter; i++) {\ndebug&gt;\n<\/code><\/pre>\n<p>Saisissez help pour afficher une liste de commandes. Vous pouvez avancer dans l&rsquo;application en entrant :<\/p>\n<ul>\n<li><strong>cont<\/strong> ou <strong>c <\/strong>: continuer l&rsquo;ex\u00e9cution<\/li>\n<li><strong>next<\/strong> ou <strong>n <\/strong>: ex\u00e9cuter la commande suivante<\/li>\n<li><strong>step<\/strong> ou <strong>s <\/strong>: entrer dans une fonction en cours d&rsquo;appel<\/li>\n<li><strong>out<\/strong> ou <strong>o <\/strong>: sortir d&rsquo;une fonction et revenir \u00e0 l&rsquo;instruction appelante<\/li>\n<li><strong>pause <\/strong>: interrompt l&rsquo;ex\u00e9cution du code<\/li>\n<li><strong>watch(&lsquo;myvar&rsquo;) <\/strong>: surveille une variable<\/li>\n<li><strong>setBreakPoint()<\/strong> ou <strong>sb() <\/strong>: d\u00e9finit un point d&rsquo;arr\u00eat<\/li>\n<li><strong>restart <\/strong>: red\u00e9marre le script<\/li>\n<li><strong>.exit<\/strong> ou <strong>Ctrl | Cmd + D <\/strong>: quitte le d\u00e9bogueur<\/li>\n<\/ul>\n<p>Il faut admettre que cette option de d\u00e9bogage est longue et peu maniable. Ne l&rsquo;utilisez que lorsqu&rsquo;il n&rsquo;y a pas d&rsquo;autre option, comme lorsque vous ex\u00e9cutez du code sur un serveur distant et que vous ne pouvez pas vous connecter depuis un autre endroit ou installer un logiciel suppl\u00e9mentaire.<\/p>\n<h2>Utilisez le navigateur Chrome pour d\u00e9boguer le code Node.js<\/h2>\n<p>L&rsquo;option d&rsquo;inspection de Node.js utilis\u00e9e ci-dessus d\u00e9marre un serveur Web Socket qui \u00e9coute sur le port 9229 de localhost. Elle lance \u00e9galement un client de d\u00e9bogage en mode texte, mais il est possible d&rsquo;utiliser des clients graphiques, tels que <a href=\"https:\/\/kinsta.com\/fr\/blog\/inspecter-elements\/\">celui int\u00e9gr\u00e9 \u00e0 Google Chrome et aux navigateurs bas\u00e9s sur Chrome<\/a> comme Chromium, Edge, Opera, Vivaldi et <a href=\"https:\/\/kinsta.com\/fr\/blog\/evaluation-navigateur-brave\/\">Brave<\/a>.<\/p>\n<p>Pour d\u00e9boguer une application web typique, lancez-la avec l&rsquo;option &#8211;inspect pour activer le serveur Web Socket du d\u00e9bogueur V8 :<\/p>\n<pre><code class=\"language-js\">node --inspect index.js<\/code><\/pre>\n<p>Note :<\/p>\n<ul>\n<li>index.js est pr\u00e9sum\u00e9 \u00eatre le script d&rsquo;entr\u00e9e de l&rsquo;application.<\/li>\n<li>Veillez \u00e0 utiliser <code>--inspect<\/code> avec des doubles tirets pour vous assurer que vous ne d\u00e9marrez pas le client du d\u00e9bogueur en mode texte.<\/li>\n<li>Vous pouvez utiliser <a href=\"https:\/\/nodemon.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">nodemon<\/a> au lieu de node si vous souhaitez red\u00e9marrer automatiquement l&rsquo;application lorsqu&rsquo;un fichier est modifi\u00e9.<\/li>\n<\/ul>\n<p>Par d\u00e9faut, le d\u00e9bogueur n&rsquo;accepte que les connexions entrantes provenant de la machine locale. Si vous ex\u00e9cutez l&rsquo;application sur un autre appareil, une machine virtuelle ou un conteneur Docker, utilisez :<\/p>\n<pre><code class=\"language-js\">node --inspect=0.0.0.0:9229 index.js<\/code><\/pre>\n<figure id=\"attachment_115105\" aria-describedby=\"caption-attachment-115105\" style=\"width: 907px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-115105 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/02\/node-inspect.png\" alt=\"Option d'inspection de node.\" width=\"907\" height=\"339\"><figcaption id=\"caption-attachment-115105\" class=\"wp-caption-text\">Option d&rsquo;inspection de node.<\/figcaption><\/figure>\n<p>Vous pouvez \u00e9galement utiliser <code>--inspect-brk<\/code> au lieu de <code>--inspect<\/code> pour arr\u00eater le traitement (d\u00e9finir un point de terminaison) sur la premi\u00e8re ligne afin de pouvoir parcourir le code depuis le d\u00e9but.<\/p>\n<p>Ouvrez un navigateur bas\u00e9 sur Chrome et saisissez <code>chrome:\/\/inspect<\/code> dans la barre d&rsquo;adresse pour afficher les p\u00e9riph\u00e9riques locaux et en r\u00e9seau :<\/p>\n<figure id=\"attachment_115106\" aria-describedby=\"caption-attachment-115106\" style=\"width: 911px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-115106 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/02\/chrome-inspect.png\" alt=\"Outil d'inspection de Chrome.\" width=\"911\" height=\"409\"><figcaption id=\"caption-attachment-115106\" class=\"wp-caption-text\">Outil d&rsquo;inspection de Chrome.<\/figcaption><\/figure>\n<p>Si votre application Node.js n&rsquo;appara\u00eet pas comme une <strong>cible distante<\/strong>, soit :<\/p>\n<ul>\n<li>Cliquez sur Ouvrir DevTools d\u00e9di\u00e9 \u00e0 Node et choisissez l&rsquo;adresse et le port, ou bien<\/li>\n<li>Cochez <strong>D\u00e9couvrir les cibles r\u00e9seau<\/strong>, cliquez sur <strong>Configurer<\/strong>, puis ajoutez l&rsquo;adresse IP et le port du p\u00e9riph\u00e9rique sur lequel il s&rsquo;ex\u00e9cute.<\/li>\n<\/ul>\n<p>Cliquez sur le lien <strong>inspecter<\/strong> de la cible pour lancer le client de d\u00e9bogage DevTools. Cela devrait \u00eatre familier \u00e0 toute personne ayant utilis\u00e9 DevTools pour le d\u00e9bogage de code c\u00f4t\u00e9 client :<\/p>\n<figure id=\"attachment_115107\" aria-describedby=\"caption-attachment-115107\" style=\"width: 920px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-115107 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/02\/chrome-devtools.png\" alt=\"Chrome DevTools.\" width=\"920\" height=\"550\"><figcaption id=\"caption-attachment-115107\" class=\"wp-caption-text\">Chrome DevTools.<\/figcaption><\/figure>\n<p>Passez au panneau des <strong>sources<\/strong>. Vous pouvez ouvrir n&rsquo;importe quel fichier en appuyant sur Cmd | Ctrl + P et en saisissant son nom de fichier (tel que index.js).<\/p>\n<p>Cependant, il est plus facile d&rsquo;ajouter le dossier de votre projet \u00e0 l&rsquo;espace de travail. Cela vous permet de charger, de modifier et d&rsquo;enregistrer des fichiers directement \u00e0 partir de DevTools (que vous pensiez que c&rsquo;est une bonne id\u00e9e ou non est une autre question !)<\/p>\n<ol>\n<li>Cliquez sur <strong>+ Ajouter un dossier \u00e0 l&rsquo;espace de travail<\/strong><\/li>\n<li>S\u00e9lectionnez l&#8217;emplacement de votre projet Node.js<\/li>\n<li>Cliquez sur <strong>Accepter <\/strong>pour autoriser les modifications du dossier<\/li>\n<\/ol>\n<p>Vous pouvez maintenant charger des fichiers \u00e0 partir de l&rsquo;arborescence de gauche :<\/p>\n<figure id=\"attachment_115113\" aria-describedby=\"caption-attachment-115113\" style=\"width: 1167px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-115113 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/02\/chrome-sources-2.png\" alt=\"Panneau des sources de Chrome DevTools.\" width=\"1167\" height=\"843\"><figcaption id=\"caption-attachment-115113\" class=\"wp-caption-text\">Panneau des sources de Chrome DevTools.<\/figcaption><\/figure>\n<p>Cliquez sur n&rsquo;importe quel num\u00e9ro de ligne pour d\u00e9finir un point de terminaison ou endpoint indiqu\u00e9 par un marqueur bleu.<\/p>\n<p>Le d\u00e9bogage est bas\u00e9 sur des <i>points de terminaison<\/i>. Ceux-ci sp\u00e9cifient l&rsquo;endroit o\u00f9 le d\u00e9bogueur doit mettre en pause l&rsquo;ex\u00e9cution du programme et montrer l&rsquo;\u00e9tat actuel du programme (variables, pile d&rsquo;appels, etc.)<\/p>\n<p>Vous pouvez d\u00e9finir un nombre quelconque de points de terminaison dans l&rsquo;interface utilisateur. Une autre option consiste \u00e0 placer une instruction debugger ; dans votre code, qui s&rsquo;arr\u00eate lorsqu&rsquo;un d\u00e9bogueur est attach\u00e9.<\/p>\n<p>Chargez et utilisez votre application web pour atteindre l&rsquo;instruction o\u00f9 un point de terminaison est plac\u00e9. Dans l&rsquo;exemple ici, <a href=\"http:\/\/localhost:3000\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/localhost:3000\/<\/a> est ouvert dans un navigateur quelconque, et DevTools arr\u00eate l&rsquo;ex\u00e9cution \u00e0 la ligne 44 :<\/p>\n<figure id=\"attachment_115114\" aria-describedby=\"caption-attachment-115114\" style=\"width: 1167px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-115114 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/02\/chrome-breakpoint.png\" alt=\"Point de terminaison Chrome.\" width=\"1167\" height=\"843\"><figcaption id=\"caption-attachment-115114\" class=\"wp-caption-text\">Point de terminaison Chrome.<\/figcaption><\/figure>\n<p>Le panneau de droite montre :<\/p>\n<ul>\n<li>Une rang\u00e9e d&rsquo;ic\u00f4nes d&rsquo;action (voir ci-dessous).<\/li>\n<li>Un volet <strong>Surveiller<\/strong>\u00a0vous permet de surveiller les variables en cliquant sur l&rsquo;ic\u00f4ne <strong>+<\/strong> et en entrant leurs noms.<\/li>\n<li>Un volet <strong>Points d&rsquo;arr\u00eat<\/strong> affiche une liste de tous les points d&rsquo;arr\u00eat et permet de les activer ou de les d\u00e9sactiver.<\/li>\n<li>Le volet <strong>Scope<\/strong> affiche l&rsquo;\u00e9tat de toutes les variables locales, de module et globales. Vous inspecterez ce volet le plus souvent.<\/li>\n<li>Le volet <strong>Call Stack<\/strong> montre la hi\u00e9rarchie des fonctions appel\u00e9es pour atteindre ce point.<\/li>\n<\/ul>\n<p>Une rang\u00e9e d&rsquo;ic\u00f4nes d&rsquo;action est affich\u00e9e au-dessus de <strong>Paused on breakpoint<\/strong>:<\/p>\n<figure id=\"attachment_115115\" aria-describedby=\"caption-attachment-115115\" style=\"width: 625px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-115115\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/02\/chrome-breakpoint-icons.png\" alt=\"Chrome breakpoint icons\" width=\"625\" height=\"222\"><figcaption id=\"caption-attachment-115115\" class=\"wp-caption-text\">Ic\u00f4nes de point d&rsquo;arr\u00eat de Chrome.<\/figcaption><\/figure>\n<p>De gauche \u00e0 droite, celles-ci ex\u00e9cutent les actions suivantes :<\/p>\n<ul>\n<li><strong>resume execution <\/strong>: Continuer le traitement jusqu&rsquo;au prochain point d&rsquo;arr\u00eat<\/li>\n<li><strong>step over <\/strong>: Ex\u00e9cuter la commande suivante mais rester dans le bloc de code actuel &#8211; ne pas sauter dans une fonction qu&rsquo;elle appelle<\/li>\n<li><strong>step into <\/strong>: Ex\u00e9cuter la commande suivante et sauter dans n&rsquo;importe quelle fonction si n\u00e9cessaire<\/li>\n<li><strong>step out <\/strong>: Continuer le traitement jusqu&rsquo;\u00e0 la fin de la fonction et revenir \u00e0 la commande appelante<\/li>\n<li><strong>step <\/strong>: Similaire \u00e0 <strong>step into<\/strong>, sauf qu&rsquo;il ne sautera pas dans les fonctions asynchrones<\/li>\n<li><strong>deactivate<\/strong> : D\u00e9sactiver tous les points d&rsquo;arr\u00eat<\/li>\n<li><strong>pause on exception <\/strong>: Arr\u00eater le traitement lorsqu&rsquo;une erreur se produit.<\/li>\n<\/ul>\n<h2>Points d&rsquo;arr\u00eat conditionnels<\/h2>\n<p>Il est parfois n\u00e9cessaire d&rsquo;exercer un peu plus de contr\u00f4le sur les points d&rsquo;arr\u00eat. Imaginez que vous ayez une boucle qui a effectu\u00e9 1 000 it\u00e9rations, mais que vous ne soyez int\u00e9ress\u00e9 que par l&rsquo;\u00e9tat de la derni\u00e8re :<\/p>\n<pre><code class=\"language-js\">\nfor (let i = 0; i &lt; 1000; i++) {\n  \/\/ set breakpoint here\n}\n<\/code><\/pre>\n<p>Plut\u00f4t que de cliquer sur <strong>resume execution<\/strong> 999 fois, vous pouvez cliquer avec le bouton droit de la souris sur la ligne, choisir <strong>Ajouter un point d&rsquo;arr\u00eat conditionnel<\/strong>, et saisir une condition telle que <code>i = 999<\/code>:<\/p>\n<figure id=\"attachment_115116\" aria-describedby=\"caption-attachment-115116\" style=\"width: 979px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-115116\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/02\/chrome-breakpoint-conditional.png\" alt=\"Chrome conditional breakpoint\" width=\"979\" height=\"113\"><figcaption id=\"caption-attachment-115116\" class=\"wp-caption-text\">Point d&rsquo;arr\u00eat conditionnel chrom\u00e9.<\/figcaption><\/figure>\n<p>Chrome affiche les points d&rsquo;arr\u00eat conditionnels en jaune plut\u00f4t qu&rsquo;en bleu. Dans ce cas, le point d&rsquo;arr\u00eat n&rsquo;est d\u00e9clench\u00e9 qu&rsquo;\u00e0 la derni\u00e8re it\u00e9ration de la boucle.<\/p>\n<h2>Points de journalisation<\/h2>\n<p>Les points de journalisation impl\u00e9mentent effectivement console.log() sans aucun code ! Une expression peut \u00eatre sortie lorsque le code ex\u00e9cute une ligne quelconque, mais elle n&rsquo;arr\u00eate pas le traitement, contrairement \u00e0 un point d&rsquo;arr\u00eat.<\/p>\n<p>Pour ajouter un point de journalisation, cliquez avec le bouton droit de la souris sur n&rsquo;importe quelle ligne, choisissez <strong>Ajouter un point de journalisation<\/strong> et saisissez une expression, par exemple <code>'loop counter i', i<\/code>:<\/p>\n<figure id=\"attachment_115117\" aria-describedby=\"caption-attachment-115117\" style=\"width: 977px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-115117 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/02\/chrome-logpoint.png\" alt=\"Point de journalisation Chrome.\" width=\"977\" height=\"111\"><figcaption id=\"caption-attachment-115117\" class=\"wp-caption-text\">Point de journalisation Chrome.<\/figcaption><\/figure>\n<p>La console DevTools affiche <code>loop counter i: 0<\/code> \u00e0 <code>loop counter i: 999<\/code> dans l&rsquo;exemple ci-dessus.<\/p>\n<h2>Utilisez VS Code pour d\u00e9boguer les applications Node.js<\/h2>\n<p><a href=\"https:\/\/code.visualstudio.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">VS Code<\/a>, ou Visual Studio Code, est un <a href=\"https:\/\/kinsta.com\/fr\/blog\/meilleurs-editeurs-de-texte\/\">\u00e9diteur de code<\/a> gratuit de Microsoft qui est devenu populaire aupr\u00e8s des <a href=\"https:\/\/kinsta.com\/fr\/blog\/comment-devenir-un-developpeur-web\/\">d\u00e9veloppeurs web<\/a>. L&rsquo;application est disponible pour Windows, macOS et Linux et est d\u00e9velopp\u00e9e \u00e0 l&rsquo;aide de technologies web dans le <a href=\"https:\/\/www.electronjs.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">framework Electron<\/a>.<\/p>\n<p>VS Code prend en charge Node.js et poss\u00e8de un client de d\u00e9bogage int\u00e9gr\u00e9. La plupart des applications peuvent \u00eatre d\u00e9bogu\u00e9es sans aucune configuration ; l&rsquo;\u00e9diteur lancera automatiquement le serveur et le client de d\u00e9bogage.<\/p>\n<p>Ouvrez le fichier de d\u00e9part (tel que index.js), activez le volet <strong>Ex\u00e9cution et d\u00e9bogage<\/strong>, cliquez sur le bouton <strong>Ex\u00e9cution et d\u00e9bogage<\/strong>, et choisissez l&rsquo;environnement <strong>Node.js<\/strong>. Cliquez sur n&rsquo;importe quelle ligne pour activer un point d&rsquo;arr\u00eat repr\u00e9sent\u00e9 par une ic\u00f4ne en forme de cercle rouge. Ensuite, ouvrez l&rsquo;application dans un navigateur comme pr\u00e9c\u00e9demment &#8211; VS Code arr\u00eate l&rsquo;ex\u00e9cution lorsque le point d&rsquo;arr\u00eat est atteint :<\/p>\n<figure id=\"attachment_115119\" aria-describedby=\"caption-attachment-115119\" style=\"width: 1245px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-115119 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/02\/vscode-breakpoint.png\" alt=\"Point d'arr\u00eat VS Code.\" width=\"1245\" height=\"881\"><figcaption id=\"caption-attachment-115119\" class=\"wp-caption-text\">Point d&rsquo;arr\u00eat VS Code.<\/figcaption><\/figure>\n<p>Les volets <strong>Variables<\/strong>, <strong>Watch<\/strong>, <strong>Call Stack<\/strong> et <strong>Breakpoints <\/strong>sont similaires \u00e0 ceux pr\u00e9sent\u00e9s dans <a href=\"https:\/\/kinsta.com\/fr\/blog\/inspecter-elements\/\" target=\"_blank\" rel=\"noopener noreferrer\">Chrome DevTools<\/a>. Le volet <strong>Loaded Scripts<\/strong> montre quels scripts ont \u00e9t\u00e9 charg\u00e9s, bien que beaucoup soient internes \u00e0 Node.js.<\/p>\n<p>La barre d&rsquo;outils des ic\u00f4nes d&rsquo;action vous permet de :<\/p>\n<ul>\n<li><strong>resume execution <\/strong>: Continuer le traitement jusqu&rsquo;au prochain point d&rsquo;arr\u00eat<\/li>\n<li><strong>step over <\/strong>: Ex\u00e9cuter la commande suivante mais rester dans la fonction actuelle &#8211; ne pas sauter dans une fonction qu&rsquo;elle appelle<\/li>\n<li><strong>step into <\/strong>: Ex\u00e9cuter la commande suivante et sauter dans n&rsquo;importe quelle fonction qu&rsquo;elle appelle<\/li>\n<li><strong>step out <\/strong>: Poursuivre le traitement jusqu&rsquo;\u00e0 la fin de la fonction et revenir \u00e0 la commande appelante<\/li>\n<li><strong>restart <\/strong>: Red\u00e9marrer<strong>\u00a0<\/strong>l&rsquo;application et le d\u00e9bogueur<\/li>\n<li><strong>stop <\/strong>: Arr\u00eater l&rsquo;application et le d\u00e9bogueur<\/li>\n<\/ul>\n<p>Comme pour Chrome DevTools, vous pouvez cliquer avec le bouton droit de la souris sur n&rsquo;importe quelle ligne pour ajouter des <strong>points d&rsquo;arr\u00eat conditionnels<\/strong> et des <strong>points de journalisation<\/strong>.<\/p>\n<p>Pour plus d&rsquo;informations, reportez-vous \u00e0 <a href=\"https:\/\/code.visualstudio.com\/docs\/introvideos\/debugging\" target=\"_blank\" rel=\"noopener noreferrer\">D\u00e9bogage dans Visual Studio Code<\/a>.<\/p>\n<h2>Configuration avanc\u00e9e du d\u00e9bogage dans VS Code<\/h2>\n<p>Une configuration plus pouss\u00e9e de VS Code peut \u00eatre n\u00e9cessaire si vous souhaitez d\u00e9boguer du code sur un autre p\u00e9riph\u00e9rique, une machine virtuelle, ou si vous devez utiliser des options de lancement alternatives telles que nodemon.<\/p>\n<p>VS Code stocke les configurations de d\u00e9bogage dans un fichier launch.json situ\u00e9 dans un r\u00e9pertoire <code>.vscode<\/code> de votre projet. Ouvrez le volet <strong>Ex\u00e9cution et d\u00e9bogage<\/strong>, cliquez sur <strong>cr\u00e9er un fichier launch.json<\/strong>, et choisissez l&rsquo;environnement <strong>Node.js<\/strong> pour g\u00e9n\u00e9rer ce fichier. Un exemple de configuration est fourni :<\/p>\n<figure id=\"attachment_115120\" aria-describedby=\"caption-attachment-115120\" style=\"width: 1245px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-115120 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/02\/vscode-launchjson.png\" alt=\"Configuration du d\u00e9bogueur VS Code.\" width=\"1245\" height=\"881\"><figcaption id=\"caption-attachment-115120\" class=\"wp-caption-text\">Configuration du d\u00e9bogueur VS Code.<\/figcaption><\/figure>\n<p>Un nombre illimit\u00e9 de r\u00e9glages de configuration peuvent \u00eatre d\u00e9finis en tant qu&rsquo;objets dans le tableau <code>\"configurations\"<\/code>. Cliquez sur <strong>Ajouter une configuration&#8230;<\/strong> et s\u00e9lectionnez une option appropri\u00e9e.<\/p>\n<p>Une configuration Node.js individuelle peut soit :<\/p>\n<ol>\n<li>Lancer un processus lui-m\u00eame, ou<\/li>\n<li>Se joindre \u00e0 un serveur Web Socket de d\u00e9bogage, peut-\u00eatre ex\u00e9cut\u00e9 sur une machine distante ou un conteneur Docker.<\/li>\n<\/ol>\n<p>Par exemple, pour d\u00e9finir une configuration nodemon, s\u00e9lectionnez <strong>Node.js : Nodemon Setup<\/strong> et modifiez le script d&rsquo;entr\u00e9e \u00ab programme \u00bb si n\u00e9cessaire :<\/p>\n<pre><code class=\"language-js\">{\n  \/\/ custom configuration\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    {\n      \"console\": \"integratedTerminal\",\n      \"internalConsoleOptions\": \"neverOpen\",\n      \"name\": \"nodemon\",\n      \"program\": \"${workspaceFolder}\/index.js\",\n      \"request\": \"launch\",\n      \"restart\": true,\n      \"runtimeExecutable\": \"nodemon\",\n      \"skipFiles\": [\n        \"&lt;node_internals&gt;\/**\"\n      ],\n      \"type\": \"pwa-node\"\n    }\n  ]\n}\n<\/code><\/pre>\n<p>Enregistrez le fichier <code>launch.json<\/code> et <strong>nodemon <\/strong>(le nom de la configuration) appara\u00eet dans la liste d\u00e9roulante en haut du volet <strong>Lancer et d\u00e9boguer<\/strong>. Cliquez sur l&rsquo;ic\u00f4ne verte d&rsquo;ex\u00e9cution pour commencer \u00e0 utiliser cette configuration et lancer l&rsquo;application \u00e0 l&rsquo;aide de nodemon :<\/p>\n<figure id=\"attachment_115121\" aria-describedby=\"caption-attachment-115121\" style=\"width: 1245px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-115121 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/02\/vscode-nodemon.png\" alt=\"D\u00e9boguage VS Code avec nodemon.\" width=\"1245\" height=\"876\"><figcaption id=\"caption-attachment-115121\" class=\"wp-caption-text\">D\u00e9boguage VS Code avec nodemon.<\/figcaption><\/figure>\n<p>Comme auparavant, vous pouvez ajouter des points d&rsquo;arr\u00eat, des points d&rsquo;arr\u00eat conditionnels et des points de journalisation. La principale diff\u00e9rence est que nodemon red\u00e9marre automatiquement votre serveur lorsqu&rsquo;un fichier est modifi\u00e9.<\/p>\n<p>Pour plus d&rsquo;informations, reportez-vous \u00e0 <a href=\"https:\/\/code.visualstudio.com\/docs\/editor\/debugging#_launch-configurations\" target=\"_blank\" rel=\"noopener noreferrer\">Configurations de lancement du code VS<\/a>.<\/p>\n<p>Les extensions VS Code suivantes peuvent \u00e9galement vous aider \u00e0 d\u00e9boguer du code h\u00e9berg\u00e9 sur des environnements de serveurs distants ou isol\u00e9s :<\/p>\n<ul>\n<li><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode-remote.remote-containers\" target=\"_blank\" rel=\"noopener noreferrer\">\u00c0 distance &#8211; Conteneurs<\/a> : Connectez-vous \u00e0 des applications ex\u00e9cut\u00e9es dans des conteneurs Docker<\/li>\n<li><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode-remote.remote-ssh\" target=\"_blank\" rel=\"noopener noreferrer\">\u00c0 distance &#8211; SSH<\/a> : Connectez-vous \u00e0 des applications ex\u00e9cut\u00e9es sur un serveur distant<\/li>\n<li><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode-remote.remote-wsl\" target=\"_blank\" rel=\"noopener noreferrer\">Remote &#8211; WSL<\/a> : Connectez-vous \u00e0 des applications fonctionnant sur le sous-syst\u00e8me Windows pour Linux (WSL).<\/li>\n<\/ul>\n<h2>Autres options de d\u00e9bogage Node.js<\/h2>\n<p>Le <a href=\"https:\/\/nodejs.org\/en\/docs\/guides\/debugging-getting-started\/\" target=\"_blank\" rel=\"noopener noreferrer\">Node.js Debugging Guide<\/a> fournit des conseils pour une gamme d&rsquo;\u00e9diteurs de texte et d&rsquo;IDE, y compris Visual Studio, JetBrains WebStorm, Gitpod et Eclipse. Atom propose une <a href=\"https:\/\/atom.io\/packages\/node-debug\" target=\"_blank\" rel=\"noopener noreferrer\">extension node-debug<\/a>, qui int\u00e8gre le d\u00e9bogueur Chrome DevTools dans l&rsquo;\u00e9diteur.<\/p>\n<p>Une fois que votre application est en ligne, vous pouvez envisager d&rsquo;utiliser des services de d\u00e9bogage commerciaux tels que <a href=\"https:\/\/logrocket.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">LogRocket<\/a> et <a href=\"https:\/\/sentry.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sentry.io<\/a>, qui peuvent enregistrer et lire les erreurs client et serveur rencontr\u00e9es par de vrais utilisateurs.<\/p>\n\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Historiquement, le <a href=\"https:\/\/kinsta.com\/fr\/blog\/erreurs-dans-javascript\/\">d\u00e9bogage de JavaScript<\/a> a \u00e9t\u00e9 difficile, mais il y a eu d&rsquo;\u00e9normes am\u00e9liorations au cours de la derni\u00e8re d\u00e9cennie. Le choix est aussi bon &#8211; sinon <i>meilleur<\/i> &#8211; que ceux fournis pour d&rsquo;autres langages.<\/p>\n<p>Utilisez l&rsquo;outil le plus pratique pour localiser un probl\u00e8me. Il n&rsquo;y a rien de mal \u00e0 utiliser console.log() pour une recherche rapide de bogues, mais Chrome DevTools ou VS Code peuvent \u00eatre pr\u00e9f\u00e9rables pour des probl\u00e8mes plus complexes. Ces outils peuvent vous aider \u00e0 cr\u00e9er un code plus robuste, et vous passerez moins de temps \u00e0 corriger les bogues.<\/p>\n<p><em>Quelle pratique de d\u00e9bogage Node.js a votre pr\u00e9f\u00e9rence ? Partagez-la dans la section des commentaires ci-dessous !<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Node.js est un moteur d&rsquo;ex\u00e9cution JavaScript bas\u00e9 sur le m\u00eame moteur V8 que celui utilis\u00e9 dans le navigateur Chrome de Google. Il est souvent utilis\u00e9 pour &#8230;<\/p>\n","protected":false},"author":188,"featured_media":54571,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[420,47],"topic":[979,994],"class_list":["post-54559","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-debugging","tag-webdev","topic-frameworks-javascript","topic-node-js"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Comment d\u00e9boguer le code Node.js \u00e0 l&#039;aide de plusieurs outils<\/title>\n<meta name=\"description\" content=\"Comment d\u00e9boguer le code Node.js \u00e0 l&#039;aide de plusieurs outils. Ce tutoriel pr\u00e9sente divers outils permettant de d\u00e9boguer les applications Node et de trouver leurs causes profondes. Plongez-y et apprenez depuis la base.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comment d\u00e9boguer le code Node.js \u00e0 l&#039;aide de plusieurs outils\" \/>\n<meta property=\"og:description\" content=\"Comment d\u00e9boguer le code Node.js \u00e0 l&#039;aide de plusieurs outils. Ce tutoriel pr\u00e9sente divers outils permettant de d\u00e9boguer les applications Node et de trouver leurs causes profondes. Plongez-y et apprenez depuis la base.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-17T08:58:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-17T13:56:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/03\/deboguer-node.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Craig Buckler\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Comment d\u00e9boguer le code Node.js \u00e0 l&#039;aide de plusieurs outils. Ce tutoriel pr\u00e9sente divers outils permettant de d\u00e9boguer les applications Node et de trouver leurs causes profondes. Plongez-y et apprenez depuis la base.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/03\/deboguer-node.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@craigbuckler\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Craig Buckler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/\"},\"author\":{\"name\":\"Craig Buckler\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/715d986404b06691ab3014e06596908e\"},\"headline\":\"Comment d\u00e9boguer le code Node.js \u00e0 l&rsquo;aide de plusieurs outils\",\"datePublished\":\"2022-03-17T08:58:27+00:00\",\"dateModified\":\"2024-09-17T13:56:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/\"},\"wordCount\":3967,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/03\/deboguer-node.jpeg\",\"keywords\":[\"debugging\",\"webdev\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/\",\"name\":\"Comment d\u00e9boguer le code Node.js \u00e0 l'aide de plusieurs outils\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/03\/deboguer-node.jpeg\",\"datePublished\":\"2022-03-17T08:58:27+00:00\",\"dateModified\":\"2024-09-17T13:56:16+00:00\",\"description\":\"Comment d\u00e9boguer le code Node.js \u00e0 l'aide de plusieurs outils. Ce tutoriel pr\u00e9sente divers outils permettant de d\u00e9boguer les applications Node et de trouver leurs causes profondes. Plongez-y et apprenez depuis la base.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/03\/deboguer-node.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/03\/deboguer-node.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Comment d\u00e9boguer le code Node.js \u00e0 l'aide de plusieurs outils\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Node.js\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/node-js\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Comment d\u00e9boguer le code Node.js \u00e0 l&#8217;aide de plusieurs outils\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/715d986404b06691ab3014e06596908e\",\"name\":\"Craig Buckler\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g\",\"caption\":\"Craig Buckler\"},\"description\":\"Freelance UK web developer, writer, and speaker. Has been around a long time and rants about standards and performance.\",\"sameAs\":[\"https:\/\/craigbuckler.com\/\",\"https:\/\/www.linkedin.com\/in\/craigbuckler\",\"https:\/\/x.com\/craigbuckler\",\"https:\/\/www.youtube.com\/channel\/UCQwdl5oBTWGhifS6bRGADMQ\"],\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/craigbuckler\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Comment d\u00e9boguer le code Node.js \u00e0 l'aide de plusieurs outils","description":"Comment d\u00e9boguer le code Node.js \u00e0 l'aide de plusieurs outils. Ce tutoriel pr\u00e9sente divers outils permettant de d\u00e9boguer les applications Node et de trouver leurs causes profondes. Plongez-y et apprenez depuis la base.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/","og_locale":"fr_FR","og_type":"article","og_title":"Comment d\u00e9boguer le code Node.js \u00e0 l'aide de plusieurs outils","og_description":"Comment d\u00e9boguer le code Node.js \u00e0 l'aide de plusieurs outils. Ce tutoriel pr\u00e9sente divers outils permettant de d\u00e9boguer les applications Node et de trouver leurs causes profondes. Plongez-y et apprenez depuis la base.","og_url":"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2022-03-17T08:58:27+00:00","article_modified_time":"2024-09-17T13:56:16+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/03\/deboguer-node.jpeg","type":"image\/jpeg"}],"author":"Craig Buckler","twitter_card":"summary_large_image","twitter_description":"Comment d\u00e9boguer le code Node.js \u00e0 l'aide de plusieurs outils. Ce tutoriel pr\u00e9sente divers outils permettant de d\u00e9boguer les applications Node et de trouver leurs causes profondes. Plongez-y et apprenez depuis la base.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/03\/deboguer-node.jpeg","twitter_creator":"@craigbuckler","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Craig Buckler","Dur\u00e9e de lecture estim\u00e9e":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/"},"author":{"name":"Craig Buckler","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/715d986404b06691ab3014e06596908e"},"headline":"Comment d\u00e9boguer le code Node.js \u00e0 l&rsquo;aide de plusieurs outils","datePublished":"2022-03-17T08:58:27+00:00","dateModified":"2024-09-17T13:56:16+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/"},"wordCount":3967,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/03\/deboguer-node.jpeg","keywords":["debugging","webdev"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/","url":"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/","name":"Comment d\u00e9boguer le code Node.js \u00e0 l'aide de plusieurs outils","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/03\/deboguer-node.jpeg","datePublished":"2022-03-17T08:58:27+00:00","dateModified":"2024-09-17T13:56:16+00:00","description":"Comment d\u00e9boguer le code Node.js \u00e0 l'aide de plusieurs outils. Ce tutoriel pr\u00e9sente divers outils permettant de d\u00e9boguer les applications Node et de trouver leurs causes profondes. Plongez-y et apprenez depuis la base.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/03\/deboguer-node.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/03\/deboguer-node.jpeg","width":1460,"height":730,"caption":"Comment d\u00e9boguer le code Node.js \u00e0 l'aide de plusieurs outils"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/deboguer-node\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Node.js","item":"https:\/\/kinsta.com\/fr\/sujets\/node-js\/"},{"@type":"ListItem","position":3,"name":"Comment d\u00e9boguer le code Node.js \u00e0 l&#8217;aide de plusieurs outils"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/715d986404b06691ab3014e06596908e","name":"Craig Buckler","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g","caption":"Craig Buckler"},"description":"Freelance UK web developer, writer, and speaker. Has been around a long time and rants about standards and performance.","sameAs":["https:\/\/craigbuckler.com\/","https:\/\/www.linkedin.com\/in\/craigbuckler","https:\/\/x.com\/craigbuckler","https:\/\/www.youtube.com\/channel\/UCQwdl5oBTWGhifS6bRGADMQ"],"url":"https:\/\/kinsta.com\/fr\/blog\/author\/craigbuckler\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/54559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/188"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=54559"}],"version-history":[{"count":11,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/54559\/revisions"}],"predecessor-version":[{"id":60794,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/54559\/revisions\/60794"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/54559\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/54559\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/54559\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/54559\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/54559\/translations\/de"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/54559\/translations\/es"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/54559\/translations\/nl"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/54559\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/54571"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=54559"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=54559"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=54559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}