Table des matières
Exemple de cet article
V8 Inspector Protocol + Chrome DevTools
如何进入 Chrome 的调试界面
Vscode 调试
Launch Configuration
Comment accéder à l'interface de débogage de Chrome
Configuration de lancement
Attach to Node Process Action
Maison interface Web js tutoriel Parlons de deux façons de déboguer le code Node.js

Parlons de deux façons de déboguer le code Node.js

Nov 30, 2021 pm 07:01 PM
node.js 调试代码

Comment déboguer votre code Node ? L'article suivant vous présentera deux façons courantes de déboguer Node.js. Il a une certaine valeur de référence et j'espère qu'il vous sera utile !

Parlons de deux façons de déboguer le code Node.js

Souvent, je m'inquiète du débogage de Node.js, et j'utilise uniquement la méthode intrusive de console.log, mais en fait, Node.js peut aussi être aussi pratique que le débogage du navigateur.

Environnement de cet article :

mac
Chrome 94.0.4606.81
node v12.12.0
vscode Version: 1.61.1
Copier après la connexion

Exemple de cet article

L'exemple de cet article utilise le modèle onion qui a été exploré précédemment. Il n'y a qu'un seul fichier, qui est index.js dans le fichier. répertoire racine, comme suit : index.js,如下:

const Koa = require('koa');

const app = new Koa();
console.log('test')

// 中间件1
app.use((ctx, next) => {
  console.log(1);
  next();
  console.log(2);
});

// 中间件 2 
app.use((ctx, next) => {
  console.log(3);
  next();
  console.log(4);
});

app.listen(9000, () => {
    console.log(`Server is starting`);
});
Copier après la connexion

V8 Inspector Protocol + Chrome DevTools

v8 Inspector Protocol 是 nodejs v6.3 新加入的调试协议,通过 websocket与 Client/IDE 交互,同时基于 Chrome/Chromium 浏览器的 devtools 提供了图形化的调试界面。

我们进入项目根目录,执行(留意这个 8888 端口,后面会用到):

node --inspect=8888 index.js
Copier après la connexion

结果如下:

Parlons de deux façons de déboguer le code Node.js

结果出来一个链接——ws://127.0.0.1:8888/5f5c59fc-d42b-4ab0-be15-6feb1a05ed2d。这个链接是 Node.js 和 Chrome 之前通信的 websocket 地址,通过 websocket 通信,我们可以在 Chrome 中实时看到 Node.js 的结果。

如何进入 Chrome 的调试界面

第一种方式(自己尝试无效)

打开 http://localhost:8888/json/list,其中 8888 是上面 --inspect 的参数。

[
    {
        "description": "node.js instance",
        "devtoolsFrontendUrl": "chrome-devtools://devtools/bundled/js_app.html?experiments=true&v8only=true&ws=localhost:8888/5f5c59fc-d42b-4ab0-be15-6feb1a05ed2d",
        "devtoolsFrontendUrlCompat": "chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=localhost:8888/5f5c59fc-d42b-4ab0-be15-6feb1a05ed2d",
        "faviconUrl": "https://nodejs.org/static/images/favicons/favicon.ico",
        "id": "5f5c59fc-d42b-4ab0-be15-6feb1a05ed2d",
        "title": "index.js",
        "type": "node",
        "url": "file:///Users/gpingfeng/Documents/Personal/Test/test-onion/index.js",
        "webSocketDebuggerUrl": "ws://localhost:8888/5f5c59fc-d42b-4ab0-be15-6feb1a05ed2d"
    }
]
Copier après la connexion

很多资料说,可以通过 devtoolsFrontendUrl 就可以直接访问到,但尝试了一下,并没有成功。【可能跟我的环境有关】

第二种方式

查了一下资料,在 stackoverflow 找到对应的方案,如下:

devtools://devtools/bundled/inspector.html?experiments=true&ws=127.0.0.1:8888/5f5c59fc-d42b-4ab0-be15-6feb1a05ed2d
Copier après la connexion

其中 devtools://devtools/bundled/inspector.html?experiments=true 是固定的,ws 参数对应的就是 websocket 地址。

可以看到界面如下:

Parlons de deux façons de déboguer le code Node.js

第三种方式

Chrome 浏览器打开 HTTP 监听接口页面,打开 dev tool,执行完 node --inspect=8888 index.js 后可以看到这个图标,点击一下:

Parlons de deux façons de déboguer le code Node.js

就可以出现跟浏览器一样的调试页面,比如 Sources Panel查看脚本、Profile Panel 监测性能等。

Parlons de deux façons de déboguer le code Node.js

另外,可以访问访问 chrome://inspect/#devices,可以看到当前浏览器监听的所有 inspect。

Parlons de deux façons de déboguer le code Node.js

Vscode 调试

除了浏览器之外,各大主流的 IDE 都支持 Node.js 的调试,本文以 Vscode 为例。

Launch Configuration

打开调试页面,给我们 Node 项目添加一个 launch 配置:

Parlons de deux façons de déboguer le code Node.js

选择 Node.js

Parlons de deux façons de déboguer le code Node.js

这样就会在项目根目录生成对应的文件 .vscode/launch.json(当然你也可以手动创建),其中 program 指的就是文件入口,${workspaceFolder}

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "type": "pwa-node",
      "request": "launch",
      "name": "Launch Program",
      "skipFiles": [
        "<node_internals>/**"
      ],
      "program": "${workspaceFolder}/index.js"
    }
  ]
}
Copier après la connexion

V8 Inspector Protocol + Chrome DevTools

v8 Inspector Protocol est un protocole de débogage nouvellement ajouté dans nodejs v6.3. Il interagit avec le client. /IDE via websocket et est basé sur le navigateur Chrome/Chromium et fournit une interface de débogage graphique.

Nous entrons dans le répertoire racine du projet et exécutons (notez le port 8888, qui sera utilisé plus tard) : Parlons de deux façons de déboguer le code Node.jsrrreee

Les résultats sont les suivants :

Parlons de deux façons de déboguer le code Node.js

Parlons de deux façons de déboguer le code Node.jsLe résultat est un lien——ws://127.0 .0.1:8888/5f5c59fc -d42b-4ab0-be15-6feb1a05ed2d. Ce lien est l'adresse websocket que Node.js et Chrome utilisaient auparavant pour communiquer. Grâce à la communication websocket, nous pouvons voir les résultats de Node.js dans Chrome en temps réel.

Comment accéder à l'interface de débogage de Chrome

La première méthode (l'essayer vous-même ne fonctionne pas)

🎜Ouvrez http : // localhost:8888/json/list, où 8888 est le paramètre de --inspect ci-dessus. 🎜rrreee🎜Beaucoup d'informations indiquent qu'il est accessible directement via devtoolsFrontendUrl, mais je l'ai essayé et cela n'a pas fonctionné. [Cela peut être lié à mon environnement]🎜🎜Deuxième méthode🎜🎜J'ai vérifié l'information et je l'ai trouvée sur stackoverflow🎜 Trouver la solution correspondante , Comme suit : 🎜rrreee🎜où devtools://devtools/bundled/inspector.html?experiments=true est corrigé et le paramètre ws correspond à l'adresse websocket. 🎜🎜Vous pouvez voir l'interface comme suit : 🎜🎜2 .png🎜🎜La troisième méthode🎜🎜Ouvrez la page de l'interface d'écoute HTTP dans le navigateur Chrome, ouvrez l'outil de développement et terminez l'exécution de node --inspect=8888 index .js Vous pouvez voir cette icône après avoir cliqué : 🎜🎜Parlons de deux façons de déboguer le code Node.js🎜🎜La même page de débogage que le navigateur apparaîtra, comme le panneau Sources pour afficher les scripts, le panneau de profil pour surveiller les performances, etc. 🎜🎜Parlons de deux façons de déboguer le code Node.js🎜🎜Aussi , vous pouvez visiter chrome://inspect/#devices et vous pouvez voir toutes les inspections surveillées par le navigateur actuel. 🎜🎜Parlons de deux façons de déboguer le code Node.js🎜

Débogage Vscode🎜🎜En plus des navigateurs, tous les principaux IDE prennent en charge le débogage Node.js. Cet article prend Vscode comme exemple. 🎜

Configuration de lancement

🎜Ouvrez la page de débogage et ajoutez une configuration de lancement à notre projet Node : 🎜🎜Parlons de deux façons de déboguer le code Node.js🎜🎜Choisissez Node.js🎜🎜Parlons de deux façons de déboguer le code Node.js🎜🎜Cela générera le fichier correspondant dans le répertoire racine du projet . vscode/launch.json (bien sûr, vous pouvez également le créer manuellement), où program fait référence à l'entrée du fichier et ${workspaceFolder} fait référence à le répertoire racine. 🎜rrreee🎜Appuyez sur F5 ou cliquez sur le bouton suivant : 🎜🎜🎜🎜🎜Résultat : 🎜🎜🎜🎜🎜Vous pouvez voir que la valeur de la portée actuelle, de la pile d'appels et d'autres informations peuvent être affichées sur la gauche, et la fonction peut également être débogué étape par étape en haut à droite, redémarrage et autres fonctions, très puissantes. 🎜

Attach to Node Process Action

Avec Attach to Node Process Action, nous pouvons directement déboguer le processus Node.js en cours d'exécution.

Par exemple, commençons d'abord le projet——npm run start. npm run start

然后 command + shift + p(window Ctrl+Shift+p),输入 Attach to Node Process Action

Puis commande + shift + p (fenêtre Ctrl+Shift+p), entrez Attach to Node Process Action, appuyez sur Entrée et sélectionnez Lorsque le processus est en cours d'exécution et appuyez sur Entrée, vous pouvez déboguer le code comme configuré ci-dessus.

Parlons de deux façons de déboguer le code Node.js

1Parlons de deux façons de déboguer le code Node.js

Résumé

Cet article résume deux méthodes courantes de débogage de Node.js. Le premier Node.js transmet les informations au navigateur Chrome via websocket, et nous débogueons directement dans Chrome. La seconde consiste à déboguer via la configuration de lancement de Vscode et la configuration personnalisée. Grâce à Attach to Node Process Action, vous pouvez facilement déboguer le code Node.js en cours d’exécution sans configuration.

Pour plus de connaissances sur les nœuds, veuillez visiter : tutoriel Nodejs

 ! ! 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Un article pour parler du contrôle de la mémoire dans Node Un article pour parler du contrôle de la mémoire dans Node Apr 26, 2023 pm 05:37 PM

Le service Node construit sur une base non bloquante et piloté par les événements présente l'avantage d'une faible consommation de mémoire et est très adapté à la gestion de requêtes réseau massives. Dans le contexte de demandes massives, les questions liées au « contrôle de la mémoire » doivent être prises en compte. 1. Le mécanisme de récupération de place du V8 et les limitations de mémoire Js sont contrôlés par la machine de récupération de place

Explication graphique détaillée de la mémoire et du GC du moteur Node V8 Explication graphique détaillée de la mémoire et du GC du moteur Node V8 Mar 29, 2023 pm 06:02 PM

Cet article vous donnera une compréhension approfondie de la mémoire et du garbage collector (GC) du moteur NodeJS V8. J'espère qu'il vous sera utile !

Parlons de la façon de choisir la meilleure image Docker Node.js ? Parlons de la façon de choisir la meilleure image Docker Node.js ? Dec 13, 2022 pm 08:00 PM

Le choix d'une image Docker pour Node peut sembler trivial, mais la taille et les vulnérabilités potentielles de l'image peuvent avoir un impact significatif sur votre processus CI/CD et votre sécurité. Alors, comment choisir la meilleure image Docker Node.js ?

Parlons en profondeur du module File dans Node Parlons en profondeur du module File dans Node Apr 24, 2023 pm 05:49 PM

Le module de fichiers est une encapsulation des opérations de fichiers sous-jacentes, telles que l'ajout de lecture/écriture/ouverture/fermeture/suppression de fichiers, etc. La plus grande caractéristique du module de fichiers est que toutes les méthodes fournissent deux versions de **synchrone** et ** asynchrone**, with Les méthodes avec le suffixe sync sont toutes des méthodes de synchronisation, et celles qui n'en ont pas sont toutes des méthodes hétérogènes.

Node.js 19 est officiellement sorti, parlons de ses 6 fonctionnalités majeures ! Node.js 19 est officiellement sorti, parlons de ses 6 fonctionnalités majeures ! Nov 16, 2022 pm 08:34 PM

Node 19 est officiellement publié. Cet article vous donnera une explication détaillée des 6 fonctionnalités majeures de Node.js 19. J'espère qu'il vous sera utile !

Parlons du mécanisme GC (garbage collection) dans Node.js Parlons du mécanisme GC (garbage collection) dans Node.js Nov 29, 2022 pm 08:44 PM

Comment Node.js fait-il le GC (garbage collection) ? L’article suivant vous guidera à travers cela.

Parlons de la boucle d'événements dans Node Parlons de la boucle d'événements dans Node Apr 11, 2023 pm 07:08 PM

La boucle d'événements est un élément fondamental de Node.js et permet une programmation asynchrone en garantissant que le thread principal n'est pas bloqué. Comprendre la boucle d'événements est crucial pour créer des applications efficaces. L'article suivant vous donnera une compréhension approfondie de la boucle d'événements dans Node. J'espère qu'il vous sera utile !

Que dois-je faire si le nœud ne peut pas utiliser la commande npm ? Que dois-je faire si le nœud ne peut pas utiliser la commande npm ? Feb 08, 2023 am 10:09 AM

La raison pour laquelle le nœud ne peut pas utiliser la commande npm est que les variables d'environnement ne sont pas configurées correctement. La solution est la suivante : 1. Ouvrez "Propriétés système" ; 2. Recherchez "Variables d'environnement" -> "Variables système", puis modifiez l'environnement. variables ; 3. Recherchez l'emplacement du dossier nodejs ; 4. Cliquez sur "OK".

See all articles