Skip to content

Ausgabe auf der Befehlszeile mit Node.js

Grundlegende Ausgabe mit dem Konsolenmodul Node.js stellt ein Konsolenmodul bereit, das viele sehr nützliche Möglichkeiten zur Interaktion mit der Befehlszeile bietet. Es ist im Grunde dasselbe wie das Konsolenobjekt, das Sie im Browser finden.

Die grundlegendste und am häufigsten verwendete Methode ist console.log(), die die an sie übergebene Zeichenkette in der Konsole ausgibt. Wenn Sie ein Objekt übergeben, wird es als Zeichenkette gerendert.

Sie können mehrere Variablen an console.log übergeben, zum Beispiel:

javascript
const x = 'x';
const y = 'y';
console.log(x, y);

Wir können auch hübsche Phrasen formatieren, indem wir Variablen und einen Formatspezifizierer übergeben. Zum Beispiel:

javascript
console.log('Meine %s hat %d Ohren', 'Katze', 2);
  • %s formatiert eine Variable als Zeichenkette
  • %d formatiert eine Variable als Zahl
  • %i formatiert eine Variable nur als ihren ganzzahligen Teil
  • %o formatiert eine Variable als Objekt Beispiel:
javascript
console.log('%o', Number);

Konsole leeren

console.clear() leert die Konsole (das Verhalten kann von der verwendeten Konsole abhängen).

Elemente zählen

console.count() ist eine praktische Methode. Nehmen Sie diesen Code:

javascript
const x = 1;
const y = 2;
const z = 3;
console.count('Der Wert von x ist '+x+' und wurde überprüft..wie oft?');
console.count('Der Wert von x ist'+x+'und wurde überprüft..wie oft?');
console.count('Der Wert von y ist'+y+'und wurde überprüft..wie oft?');

Was passiert, ist, dass console.count() die Anzahl der Ausgaben einer Zeichenkette zählt und die Zählung daneben ausgibt:

Sie können einfach Äpfel und Orangen zählen:

javascript
const oranges = ['orange', 'orange'];
const apples = ['nur ein Apfel'];
oranges.forEach(fruit => console.count(fruit));
apples.forEach(fruit => console.count(fruit));

Zählung zurücksetzen

Die Methode console.countReset() setzt den mit console.count() verwendeten Zähler zurück.

Wir werden das Beispiel mit Äpfeln und Orangen verwenden, um dies zu demonstrieren.

javascript
const oranges = ['orange', 'orange'];
const apples = ['nur ein Apfel'];
oranges.forEach(fruit => console.count(fruit));
apples.forEach(fruit => console.count(fruit));
console.countReset('orange');
oranges.forEach(fruit => console.count(fruit));

Den Stack-Trace ausgeben

Es kann Fälle geben, in denen es nützlich ist, den Call-Stack-Trace einer Funktion auszugeben, vielleicht um die Frage zu beantworten, wie man diesen Teil des Codes erreicht hat.

Dies können Sie mit console.trace() tun:

javascript
const function2 = () => console.trace();
const function1 = () => function2();
function1();

Dadurch wird der Stack-Trace ausgegeben. Das wird ausgegeben, wenn wir dies im Node.js REPL versuchen:

bash
Trace
at function2 (repl:1:33)
at function1 (rep1:1:25)
at rep1:1:1
at ContextifyScript.Script.xunInThisContext (vm.js:44:33)
at REPLServer.defaultEval(repl.js:239:29)
at bound (domain.js:301:14)
at REPLServer.xunBound [as eval](domain.js:314:12)
at REPLServer.onLine (repl.js:440:10)
at emitone (events.js:120:20)
at REPLServer.emit (events.js:210:7)

Die aufgewendete Zeit berechnen

Sie können einfach berechnen, wie lange eine Funktion zur Ausführung benötigt, indem Sie time() und timeEnd() verwenden.

javascript
const doSomething = () => console.log('test');
const measureDoingSomething = () => {
    console.time('doSomething()');
    // etwas tun und die dafür benötigte Zeit messen
    doSomething();
    console.timeEnd('doSomething()');
};
measureDoingSomething();

stdout und stderr

Wie wir gesehen haben, eignet sich console.log hervorragend zum Ausgeben von Meldungen in der Konsole. Dies wird als Standardausgabe oder stdout bezeichnet.

console.error gibt in den stderr-Stream aus.

Es wird nicht in der Konsole angezeigt, sondern im Fehlerprotokoll.

Die Ausgabe farbig gestalten

Sie können die Ausgabe Ihres Textes in der Konsole mit Escape-Sequenzen einfärben. Eine Escape-Sequenz ist eine Reihe von Zeichen, die eine Farbe identifiziert.

Beispiel:

javascript
console.log('x1b[33ms/x1b[0m', 'hi!');

Sie können dies im Node.js REPL ausprobieren, und es wird hi! in Gelb ausgegeben.

Dies ist jedoch der Low-Level-Ansatz. Der einfachste Weg, die Konsolenausgabe einzufärben, ist die Verwendung einer Bibliothek. Chalk ist eine solche Bibliothek, die nicht nur beim Einfärben, sondern auch bei anderen Styling-Möglichkeiten hilft, z. B. Text fett, kursiv oder unterstrichen zu gestalten.

Sie installieren sie mit npm install chalk und können sie dann verwenden:

javascript
const chalk = require('chalk');
console.log(chalk.yellow('hi!'));

Die Verwendung von chalk.yellow ist viel bequemer als zu versuchen, sich die Escape-Codes zu merken, und der Code ist viel lesbarer.

Weitere Anwendungsbeispiele finden Sie unter dem oben angegebenen Projektlink.

Eine Fortschrittsanzeige erstellen

progress ist ein tolles Paket, um eine Fortschrittsanzeige in der Konsole zu erstellen. Installiere es mit npm install progress.

Dieser Code-Schnipsel erstellt eine 10-stufige Fortschrittsanzeige, und alle 100ms wird ein Schritt abgeschlossen. Wenn die Anzeige abgeschlossen ist, löschen wir das Intervall:

javascript
const ProgressBar = require('progress');
const bar = new ProgressBar(':bar', { total: 10 });
const timer = setInterval(() => {
    bar.tick();
    if (bar.complete) {
        clearInterval(timer);
    }
}, 100);