


Lassen Sie uns über zwei Möglichkeiten zum Debuggen von Node.js-Code sprechen
Wie debugge ich meinen Node-Code? Der folgende Artikel stellt Ihnen zwei gängige Methoden zum Debuggen von Node.js vor. Er hat einen gewissen Referenzwert und ich hoffe, er wird Ihnen hilfreich sein!
Oft mache ich mir Sorgen um das Debuggen von Node.js und verwende nur die aufdringliche Methode von console.log, aber tatsächlich kann Node.js auch so praktisch sein wie das Browser-Debuggen.
Umgebung dieses Artikels:
mac Chrome 94.0.4606.81 node v12.12.0 vscode Version: 1.61.1
Beispiel dieses Artikels
Das Beispiel dieses Artikels verwendet das zuvor untersuchte Zwiebelmodell. Es gibt nur eine Datei, nämlich index.js
Stammverzeichnis wie folgt: 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`); });
V8 Inspector Protocol + Chrome DevTools
v8 Inspector Protocol 是 nodejs v6.3 新加入的调试协议,通过 websocket与 Client/IDE 交互,同时基于 Chrome/Chromium 浏览器的 devtools 提供了图形化的调试界面。
我们进入项目根目录,执行(留意这个 8888 端口,后面会用到):
node --inspect=8888 index.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" } ]
很多资料说,可以通过 devtoolsFrontendUrl
就可以直接访问到,但尝试了一下,并没有成功。【可能跟我的环境有关】
第二种方式
查了一下资料,在 stackoverflow 找到对应的方案,如下:
devtools://devtools/bundled/inspector.html?experiments=true&ws=127.0.0.1:8888/5f5c59fc-d42b-4ab0-be15-6feb1a05ed2d
其中 devtools://devtools/bundled/inspector.html?experiments=true
是固定的,ws
参数对应的就是 websocket 地址。
可以看到界面如下:
第三种方式
Chrome 浏览器打开 HTTP 监听接口页面,打开 dev tool,执行完 node --inspect=8888 index.js
后可以看到这个图标,点击一下:
就可以出现跟浏览器一样的调试页面,比如 Sources Panel查看脚本、Profile Panel 监测性能等。
另外,可以访问访问 chrome://inspect/#devices
,可以看到当前浏览器监听的所有 inspect。
Vscode 调试
除了浏览器之外,各大主流的 IDE 都支持 Node.js 的调试,本文以 Vscode 为例。
Launch Configuration
打开调试页面,给我们 Node 项目添加一个 launch 配置:
选择 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" } ] }
V8 Inspector Protocol + Chrome DevToolsv8 Inspector Protocol ist ein neu hinzugefügtes Debugging-Protokoll in NodeJS v6.3. Es interagiert mit dem Client /IDE über Websocket und basiert auf dem Chrome/Chromium-Browser. Devtools bietet eine grafische Debugging-Oberfläche.
v8 Inspector Protocol ist ein neu hinzugefügtes Debugging-Protokoll in NodeJS v6.3. Es interagiert mit dem Client /IDE über Websocket und basiert auf dem Chrome/Chromium-Browser. Devtools bietet eine grafische Debugging-Oberfläche.
Wir geben das Projektstammverzeichnis ein und führen es aus (beachten Sie den 8888-Port, der später verwendet wird): rrreee
Das Ergebnis ist ein Link——
ws://127.0 .0.1:8888/5f5c59fc -d42b-4ab0-be15-6feb1a05ed2d
. Dieser Link ist die Websocket-Adresse, die Node.js und Chrome zuvor für die Kommunikation verwendet haben. Durch die Websocket-Kommunikation können wir die Ergebnisse von Node.js in Chrome in Echtzeit sehen.
So rufen Sie die Debugging-Oberfläche von Chrome auf
Die erste Methode (es selbst auszuprobieren funktioniert nicht)
🎜Öffnen Siehttp: // localhost:8888/json/list
, wobei 8888
der Parameter von --inspect
oben ist. 🎜rrreee🎜Viele Informationen besagen, dass der Zugriff direkt über devtoolsFrontendUrl
möglich ist, aber ich habe es versucht und es hat nicht funktioniert. [Es hängt möglicherweise mit meiner Umgebung zusammen]🎜🎜Zweite Methode🎜🎜Ich habe die Informationen überprüft und sie unter stackoverflow🎜 Finden Sie die entsprechende Lösung , Wie folgt: 🎜rrreee🎜wobei devtools://devtools/bundled/inspector.html?experiments=true
fest ist und der Parameter ws
der Websocket-Adresse entspricht. 🎜🎜Sie können die Schnittstelle wie folgt sehen: 🎜🎜node --inspect=8888 index .js
Sie können dieses Symbol sehen, nachdem Sie auf Folgendes geklickt haben: 🎜🎜chrome://inspect/#devices
besuchen und alle vom aktuellen Browser überwachten Inspektionen sehen. 🎜🎜Vscode-Debugging🎜🎜Zusätzlich zu Browsern unterstützen alle wichtigen IDEs das Node.js-Debugging. In diesem Artikel wird Vscode als Beispiel verwendet. 🎜Startkonfiguration
🎜Öffnen Sie die Debugging-Seite und fügen Sie eine Startkonfiguration zu unserem Node-Projekt hinzu: 🎜🎜
🎜🎜Wählen Sie Node.js🎜🎜
🎜🎜Dadurch wird die entsprechende Datei im Projektstammverzeichnis generiert . vscode/launch.json
(Sie können es natürlich auch manuell erstellen), wobei sich program
auf den Dateieintrag und ${workspaceFolder
bezieht das Stammverzeichnis. 🎜rrreee🎜Drücken Sie F5 oder klicken Sie auf die folgende Schaltfläche: 🎜🎜🎜🎜🎜Ergebnis: 🎜🎜🎜🎜🎜Sie können sehen, dass links der Wert des aktuellen Bereichs, der Aufrufstapel und andere Informationen sowie die Funktion angezeigt werden können Kann auch oben rechts Schritt für Schritt debuggt werden, Neustart und andere Funktionen, sehr leistungsstark. 🎜Attach to Node Process Action
Mit der Attach to Node Process Action können wir den laufenden Node.js-Prozess direkt debuggen.
Lassen Sie uns zum Beispiel zuerst das Projekt starten – npm run start
. npm run start
。
然后 command + shift + p
(window Ctrl+Shift+p
),输入 Attach to Node Process Action
Befehl + Umschalt + P
(Fenster Strg+Umschalt+p
), geben Sie Attach to Node Process Action
ein, drücken Sie die Eingabetaste und wählen Sie aus Wenn der Prozess ausgeführt wird und Sie die Eingabetaste drücken, können Sie den Code wie oben konfiguriert debuggen. Weitere Informationen zu Knoten finden Sie unter: nodejs-Tutorial
! ! 🎜Das obige ist der detaillierte Inhalt vonLassen Sie uns über zwei Möglichkeiten zum Debuggen von Node.js-Code sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Der nicht blockierende und ereignisgesteuerte Knotendienst hat den Vorteil eines geringen Speicherverbrauchs und eignet sich sehr gut für die Verarbeitung massiver Netzwerkanforderungen. Unter der Voraussetzung massiver Anfragen müssen Probleme im Zusammenhang mit der „Speicherkontrolle“ berücksichtigt werden. 1. Der Garbage-Collection-Mechanismus und die Speicherbeschränkungen von V8 Js wird von der Garbage-Collection-Maschine gesteuert

Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis des Speichers und Garbage Collectors (GC) der NodeJS V8-Engine. Ich hoffe, er wird Ihnen hilfreich sein!

Die Auswahl eines Docker-Images für Node mag trivial erscheinen, aber die Größe und potenziellen Schwachstellen des Images können erhebliche Auswirkungen auf Ihren CI/CD-Prozess und Ihre Sicherheit haben. Wie wählen wir also das beste Node.js-Docker-Image aus?

Das Dateimodul ist eine Kapselung der zugrunde liegenden Dateioperationen, wie z. B. Lesen/Schreiben/Öffnen/Schließen/Löschen von Dateien, Hinzufügen usw. Das größte Merkmal des Dateimoduls besteht darin, dass alle Methoden zwei Versionen von **synchronem** und **bereitstellen. asynchron**, mit Methoden mit dem Suffix sync sind alle Synchronisationsmethoden, und diejenigen ohne sind alle heterogene Methoden.

Node 19 wurde offiziell veröffentlicht. Dieser Artikel wird Ihnen eine detaillierte Erklärung der 6 Hauptfunktionen von Node.js 19 geben. Ich hoffe, er wird Ihnen hilfreich sein!

Wie führt Node.js GC (Garbage Collection) durch? Der folgende Artikel führt Sie durch.

Die Ereignisschleife ist ein grundlegender Bestandteil von Node.js und ermöglicht die asynchrone Programmierung, indem sie sicherstellt, dass der Hauptthread nicht blockiert wird. Das Verständnis der Ereignisschleife ist für die Erstellung effizienter Anwendungen von entscheidender Bedeutung. Der folgende Artikel wird Ihnen ein detailliertes Verständnis der Ereignisschleife in Node vermitteln. Ich hoffe, er wird Ihnen hilfreich sein!

Der Grund, warum der Knoten den Befehl npm nicht verwenden kann, liegt darin, dass die Umgebungsvariablen nicht richtig konfiguriert sind. Die Lösung ist: 1. Öffnen Sie „Systemeigenschaften“ 2. Suchen Sie nach „Umgebungsvariablen“ -> „Systemvariablen“ und bearbeiten Sie dann die Umgebung Variablen; 3. Suchen Sie den Speicherort des NodeJS-Ordners. 4. Klicken Sie auf „OK“.
