Aufwärmen · Aufgabe 1 von 7
// B1.2 · ca. 32 Min. · Einstieg
Der Befehl node, die REPL und --watch
Nach dieser Lektion führen Sie JavaScript mit node als Datei, als String oder in der REPL aus, wissen, welche Node.js-Version es ausführt, und starten Ihr Programm bei jedem Speichern neu.
Danach können Sie
- Code mit node main.js, node -e und node -p ausführen und die Version mit node --version oder process.version ablesen
- Die REPL nutzen: Werte ohne console.log sehen, _ weiterverwenden, mehrzeiligen Code eingeben und sie wieder verlassen
- Ein Programm mit --watch bei jedem Speichern neu starten und vorhersagen, was --watch-path beobachtet
Vorhersagen · Aufgabe 2 von 7
Sagen Sie es vorher, bevor Sie weiterlesen. Sie starten node und tippen diese zwei Zeilen, jeweils mit Enter. Was gibt die REPL nach der zweiten Zeile aus?
6 * 7 _ + 1Üben · Aufgabe 3 von 7
Setzen Sie das Flag ein, damit der Befehl 1024 ausgibt, den Wert des Ausdrucks, ganz ohne console.log.
node ____ "2 ** 10"node "2 ** 10"Üben · Aufgabe 4 von 7
Ordnen Sie jedem Befehl zu, was er tut.
Üben · Aufgabe 5 von 7
Sie tippen in der REPL die erste Zeile und drücken Enter. Die REPL wartet auf mehr, also tippen Sie die anderen beiden. Was gibt sie aus?
[1, 2, 3].forEach((n) => { console.log(n * 10) })Denksport · Aufgabe 6 von 7
Knobelaufgabe. main.js importiert ./greet.js, das nicht in src liegt. Sie starten den Befehl unten, speichern eine Änderung an greet.js und dann eine neue Datei src/notes.txt. Wie oft startet main.js neu?
node --watch-path=src main.jsAnwenden · Aufgabe 7 von 7
Mini-Aufgabe. Legen Sie in einem neuen Ordner eine package.json mit "type": "module" und einem "dev"-Skript an, das node --watch main.js ausführt, dazu eine main.js, die eine Zeile ausgibt. Starten Sie sie mit node --run dev, ändern Sie die Zeile in main.js und speichern Sie. Prüfen Sie, dass das Terminal Restarting meldet und die neue Zeile zeigt. Führen Sie dann in einem zweiten Terminal node --version aus und notieren Sie Ihre Version.
Prüfen Sie Ihr Ergebnis anhand dieser Liste
Selbst programmieren
Lesen Sie das ausgearbeitete Beispiel und lösen Sie dann die Übungen. Ihr Code läuft in Ihrem Browser oder auf Ihrem Computer und wird nie hochgeladen.
Ausgearbeitetes Beispiel
Welches Node.js läuft hier?
Prüfen Sie vor jeder Fehlersuche, welches Node.js Ihren Code ausführt. Dieses Programm fragt den laufenden Prozess. process.version ist derselbe String, den node --version ausgibt, process.versions listet die Versionen von Node.js und seinen eingebauten Teilen, etwa der JavaScript-Engine V8, und process.release.lts nennt die Linie mit Langzeitunterstützung (LTS). Die Ausgabe unten stammt von Node.js 24.21.0; Ihr Rechner zeigt seine eigene Version.
main.js
// Which Node.js is running this file? The process object knows.
console.log("version:", process.version);
console.log("without the v:", process.versions.node);
console.log("V8 engine:", process.versions.v8);
console.log("LTS name:", process.release.lts);
Ausführen mit
node main.jsAusgabe
version: v24.21.0
without the v: 24.21.0
V8 engine: 13.6.233.17-node.53
LTS name: Krypton- process.version beginnt mit einem v; process.versions.node ist dieselbe Version ohne das v.
- process.versions.v8 ist die Version von V8, der JavaScript-Engine, die Ihren Code ausführt.
- Krypton ist der Name der LTS-Linie von Node.js 24. Bei einem Current-Release, das kein LTS ist, ist process.release.lts undefined.
- node --version im selben Terminal gibt dasselbe v24.21.0 aus: Es ist dasselbe node.
Übungen
Übung 1 von 2
Von der REPL in eine Datei
Diese drei Zeilen stammen aus einer REPL-Sitzung, in der sie 42, dann 50 und dann 'NODE' ausgaben. Als main.js gespeichert, brechen sie mit ReferenceError: _ is not defined ab, und ohnehin gibt eine Datei nichts aus, was sie nicht ausgeben soll. Schreiben Sie main.js so um, dass node main.js 42, 50 und NODE ausgibt, je in einer Zeile. Behalten Sie die Rechnungen: Speichern Sie 6 * 7 in einer Variablen, statt sich auf _ zu verlassen.
Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser den JavaScript-Runner herunter (bis zu 0.1 MB) und speichert ihn im Cache. Ihr Code läuft in der eigenen Engine Ihres Browsers und bleibt auf Ihrem Gerät.
Hinweise
Hinweis 1
In einer Datei erscheint ein Wert nur, wenn Sie ihn an console.log übergeben.
Hinweis 2
_ gibt es nur in der REPL. Geben Sie dem ersten Ergebnis einen Namen: const answer = 6 * 7;
Hinweis 3
console.log("node".toUpperCase()) gibt NODE ohne Anführungszeichen aus.
Eine Lösung zeigen
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
const answer = 6 * 7;
console.log(answer);
console.log(answer + 8);
console.log("node".toUpperCase());
Auf dem eigenen Computer ausführen
Installieren Sie Node.js 24 LTS oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.
main.js
// Copied from a REPL session. It printed 42, then 50, then 'NODE'.
6 * 7;
_ + 8;
"node".toUpperCase();
main.test.js
import {test} from 'node:test';
import assert from 'node:assert/strict';
import {runMain} from './learnrun.js';
test('läuft ohne Fehler', async () => {
await runMain();
});
test('gibt 42, 50 und NODE aus, je in einer Zeile', async () => {
const got = (await runMain()).trimEnd().split('\n');
assert.deepEqual(got, ['42', '50', 'NODE'], `das Programm gab ${JSON.stringify(got)} aus`);
});
package.json
{
"type": "module"
}
package.json sagt Node.js, dass die .js-Dateien Module sind; lassen Sie die Datei im Ordner.
Programm ausführen:
node main.jsPrüfungen ausführen (learnrun.js muss im selben Ordner liegen):
node --testlearnrun.js herunterladenÜbung 2 von 2
Die Hauptversion
Schreiben Sie major(version): Die Funktion bekommt einen Versions-String wie "v24.21.0", wie process.version ihn liefert, und gibt die Hauptversion als Zahl zurück: 24. Sie muss mit jeder Stellenzahl funktionieren, etwa "v8.17.0" und "v100.0.0". Die letzte Zeile von main.js gibt damit schon die laufende Version aus, zum Beispiel Node.js v24.21.0 major 24. Starten Sie es mit node main.js und prüfen Sie die Tests mit node --test.
Diese Übung braucht Node.js auf Ihrem Computer (die Browser-Version kann sie nicht ausführen). Dateien und Befehle stehen unten.
Hinweise
Hinweis 1
Entfernen Sie zuerst das führende v: "v24.21.0".slice(1) ist "24.21.0".
Hinweis 2
split(".") zerlegt den Rest in ["24", "21", "0"]; das erste Element ist die Hauptversion.
Hinweis 3
Die Teile sind Strings. Number("24") macht daraus die Zahl 24.
Eine Lösung zeigen
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
// Returns the major version as a number: "v24.21.0" -> 24.
export function major(version) {
return Number(version.slice(1).split(".")[0]);
}
console.log("Node.js", process.version, "major", major(process.version));
Auf dem eigenen Computer ausführen
Installieren Sie Node.js 24 LTS oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.
main.js
// Returns the major version as a number: "v24.21.0" -> 24.
export function major(version) {
return 0;
}
console.log("Node.js", process.version, "major", major(process.version));
main.test.js
import {test} from 'node:test';
import assert from 'node:assert/strict';
import {runMain} from './learnrun.js';
import {major} from './main.js';
test('major("v24.21.0") ist 24', () => {
assert.equal(major('v24.21.0'), 24, `major("v24.21.0") lieferte ${JSON.stringify(major('v24.21.0'))}`);
});
test('funktioniert mit ein- und dreistelligen Hauptversionen', () => {
assert.equal(major('v8.17.0'), 8, `major("v8.17.0") lieferte ${JSON.stringify(major('v8.17.0'))}`);
assert.equal(major('v100.0.0'), 100, `major("v100.0.0") lieferte ${JSON.stringify(major('v100.0.0'))}`);
});
test('gibt die Version des Node.js aus, das es ausführt', async () => {
const expected = `Node.js ${process.version} major ${process.versions.node.split('.')[0]}`;
const got = (await runMain()).trimEnd();
assert.equal(got, expected, `das Programm gab ${JSON.stringify(got)} aus, erwartet: ${JSON.stringify(expected)}`);
});
package.json
{
"type": "module"
}
package.json sagt Node.js, dass die .js-Dateien Module sind; lassen Sie die Datei im Ordner.
Programm ausführen:
node main.jsPrüfungen ausführen (learnrun.js muss im selben Ordner liegen):
node --testlearnrun.js herunterladenHäufige Fehler
Eine REPL-Sitzung in eine Datei kopieren
> 6 * 7
42
Was Node.js ausgibt
SyntaxError: Unexpected token '>'Warum, und die Lösung
Das > am Zeilenanfang ist der Prompt der REPL, die Zeile darunter ihre Antwort: Beides ist kein JavaScript. Kopieren Sie nur den Code, den Sie eingetippt haben, und übergeben Sie jeden Wert, den Sie sehen wollen, an console.log: console.log(6 * 7). Weil es ein SyntaxError ist, läuft keine einzige Zeile der Datei.
_ in einer Datei verwenden
const total = 6 * 7;
console.log(_ + 1);
Was Node.js ausgibt
ReferenceError: _ is not definedWarum, und die Lösung
_ ist eine Bequemlichkeit der REPL, die darin das letzte Ergebnis speichert. Eine Datei hat keine solche Variable, dort ist _ ein unbekannter Name. Geben Sie Ihren Werten stattdessen Namen: console.log(total + 1).
fs ohne Import verwenden
console.log(fs.existsSync("main.js"));
Was Node.js ausgibt
ReferenceError: fs is not definedWarum, und die Lösung
Die REPL lädt eingebaute Module wie fs, sobald Sie ihren Namen tippen, deshalb funktioniert die Zeile dort. Eine Datei bekommt diese Hilfe nicht: Sie importiert, was sie braucht. Schreiben Sie import {existsSync} from "node:fs"; an den Anfang und rufen Sie existsSync("main.js") auf.
JavaScript im Browser: die eigene Engine Ihres Browsers in einem abgeschotteten Worker. Syntaxfehler findet acorn 8.18.0, MIT. Lizenz und Quellcode
Abschlussquiz
5 Fragen, ohne Hinweise. Ab 80 % ist die Lektion abgeschlossen.
Erledigen Sie zuerst alle Aufgaben oben, um das Abschlussquiz freizuschalten.