Abschnitt 4 · Lektion 6
Node auf deinem Rechner
Das Werkzeug aus der Synthese gruppiert eine Einkaufsliste, und bisher tut es das auf einer Maschine im Rechenzentrum, mit einer Datei, die der Kurs dort hingelegt hat. Etwas taugen wird es erst da, wo deine eigenen Dateien liegen, und dafür braucht dein Rechner Node. Eine Aufgabe gibt es dazu nicht, denn was auf deinem Rechner passiert, sehe ich von hier aus nicht.
Welche Version
console.log("Version:", process.version);
console.log("System:", process.platform); Das Programm gibt die Version und das Betriebssystem aus. Hier steht eine 24 und linux, die
Sandbox ist ein Linux-Rechner. Auf deinem Rechner zeigt dasselbe Programm deine eigene Version, und
statt linux steht dort win32 für Windows oder darwin für den Mac. Ohne Programm geht es auch,
mit node --version aus der Befehlsleiste.
Der Kurs ist mit Node 24 gebaut, und jede Ausgabe in den Artikeln ist mit einer 24 gemessen. Auf nodejs.org stehen meist zwei Hauptversionen zur Wahl. Die mit dem Zusatz LTS (long-term support) bekommt rund 30 Monate lang Fehlerbehebungen, die mit Current ist für alle, die neue Funktionen früher haben wollen. Node 24 ist eine LTS-Version, und auf der Download-Seite lässt sie sich auswählen, auch wenn dort schon eine neuere vorn steht. Mit Node 26 bestehen die Lösungen aller Aufgaben ebenfalls, nur zwei der Beispiele zeigen dort etwas anderes als hier.
Älter darf es dagegen nicht sein. Ab Abschnitt 12 arbeitet der Kurs mit der Datenbank, die Node
selbst mitbringt, und Node 22 schreibt beim Laden eine Warnung auf den Fehlerkanal,
ExperimentalWarning: SQLite is an experimental feature and might change at any time. Node 24 tut
das bis Version 24.14 auch, erst ab Version 24.15 nicht mehr. Die Zeile schadet nicht, aber sie
steht in jedem Lauf, und wer mit dem Kurs vergleicht, sucht einen Fehler, den es nicht gibt. Node 20
kennt diese Datenbank gar nicht.
const version = process.versions.node;
const [haupt, neben] = version.split(".").map(Number);
if (haupt > 24 || (haupt === 24 && neben >= 15)) {
console.log("Passt, das reicht für den Kurs.");
} else {
console.error(`Node ${version} ist zu alt, der Kurs braucht 24.15 oder neuer.`);
process.exitCode = 1;
} Das Beispiel ist zum Mitnehmen. process.versions.node ist die Version als Text ohne das v
davor, etwa 24.15.0. Am Punkt zerlegt und mit Number umgewandelt, lassen sich die ersten beiden
Teile vergleichen. Ist die Version zu alt, steht eine Zeile auf dem Fehlerkanal, und der Exit-Code
ist 1, wie bei jedem Werkzeug aus diesem Abschnitt.
Windows
Auf nodejs.org gibt es unter Download für Windows einen Installer mit der Endung .msi. Er
installiert Node und npm und trägt beide in den PATH ein, die Liste der Ordner, in denen Windows
nach Befehlen sucht. Den Haken bei „Tools for Native Modules“ braucht der Kurs nicht, er holt
Werkzeuge für Pakete, die in C oder C++ geschrieben sind, und so eins kommt im Kurs nicht vor.
Das Terminal heißt im Startmenü „Terminal“, auf älteren Windows-Versionen „PowerShell“. Eins, das
beim Installieren schon offen war, kennt node noch nicht. Ein neu geöffnetes schon.
Mac
Für den Mac liegt auf derselben Seite ein Installationspaket mit der Endung .pkg, das sich wie
jedes andere Programm installiert. Das Terminal steht unter Programme im Ordner Dienstprogramme,
schneller geht es über die Spotlight-Suche mit Befehlstaste und Leertaste.
Wer Homebrew benutzt, bekommt mit brew install node die neueste Version, und das ist nicht
unbedingt die 24. brew install node@24 holt die 24, legt den Befehl node aber nicht in den
PATH. Was dafür fehlt, schreibt brew info node@24 hin.
Linux
Die Paketquellen der Distribution helfen hier selten. Ubuntu 26.04 bringt über apt Node 22 mit,
Debian 13 Node 20, und beide sind zu alt für den Kurs. Bequemer ist nvm, ein Programm, das mehrere
Node-Versionen nebeneinander hält und auch auf dem Mac läuft. Auf der Download-Seite steht es zur
Auswahl. Mit Linux, nvm und der Version 24 erscheint dort ein kurzer Block zum Kopieren, und seine
wichtigste Zeile ist nvm install 24. Die erste Version, die nvm installiert, ist danach in jedem
neuen Terminal da.
npm kommt mit
Mit Node kommt npm auf den Rechner, das Programm für Pakete aus Abschnitt 5, und npm --version
zeigt, dass es da ist. Ab Abschnitt 6 liegt bei jeder Aufgabe eine package.json, eine Datei, in
der unter anderem steht, welche Pakete das Projekt braucht. Wer so ein Projekt mit nach Hause
nimmt, tippt in seinem Ordner einmal npm install. npm holt dann die Pakete, die dort stehen, aus
dem Netz und legt sie in einen Ordner node_modules. In der Sandbox geht das anders, sie hat kein
Netz, und die beiden Pakete des Kurses liegen dort schon bereit.
Das Werkzeug zu Hause starten
Für die eigenen Werkzeuge lohnt ein eigener Ordner, etwa werkzeuge in deinen Dokumenten. Hinein
kommt deine werkzeug.mjs aus der Synthese und daneben ein Ordner daten mit der einkauf.json.
[
{ "name": "Kaffee", "kategorie": "Getränke", "laden": "Supermarkt", "menge": 2 },
{ "name": "Tee", "kategorie": "Getränke", "laden": "Supermarkt", "menge": 1 },
{ "name": "Milch", "kategorie": "Getränke", "laden": "Hofladen", "menge": 3 },
{ "name": "Saft", "kategorie": "Getränke", "laden": "Supermarkt", "menge": 1 },
{ "name": "Brot", "kategorie": "Backwaren", "laden": "Bäckerei", "menge": 1 },
{ "name": "Brötchen", "kategorie": "Backwaren", "laden": "Bäckerei", "menge": 6 },
{ "name": "Äpfel", "kategorie": "Obst", "laden": "Hofladen", "menge": 4 }
] import { readFile } from "node:fs/promises";
const DATEI = "daten/einkauf.json";
const [feld] = process.argv.slice(2);
if (feld === undefined) {
console.error("Aufruf: node werkzeug.mjs <feld>");
process.exit(1);
}
console.error(`Lese ${DATEI} ...`);
let eintraege;
try {
eintraege = JSON.parse(await readFile(DATEI, "utf8"));
} catch {
console.error(`Konnte ${DATEI} nicht lesen.`);
process.exit(1);
}
const gruppen = {};
for (const eintrag of eintraege) {
const wert = eintrag[feld];
gruppen[wert] = (gruppen[wert] ?? 0) + 1;
}
for (const [wert, anzahl] of Object.entries(gruppen)) {
console.log(`${wert}: ${anzahl}`);
} Im Terminal wechselt cd (change directory) in diesen Ordner, cd Documents/werkzeuge oder wie er
bei dir heißt. Danach startet node werkzeug.mjs kategorie das Werkzeug, und es schreibt dieselben
drei Zeilen wie hier. Ein anderes Feld ist nur ein anderes Argument, node werkzeug.mjs laden
gruppiert nach dem Laden.
Der Fehler, der an dieser Stelle wartet, ist der falsche Ordner. Ein frisch geöffnetes Terminal
steht in deinem persönlichen Ordner, dem mit deinem Namen, und nicht in werkzeuge, und Node sucht
die Datei dort, wo das Terminal steht. Der Befehl cd daten && node werkzeug.mjs kategorie in der
Befehlsleiste spielt das nach, er wechselt erst nach daten und startet dann. Im Terminal steht
Error: Cannot find module, dahinter der volle Pfad, unter dem Node gesucht hat. An diesem Pfad
lässt sich ablesen, wo das Terminal gerade steht. In Visual Studio Code passiert das seltener, denn
dort startet das eingebaute Terminal in dem Ordner, der gerade geöffnet ist.
Der letzte Befehl ist die feinere Fassung. Er nennt die Datei mit ihrem Pfad,
node ../werkzeug.mjs kategorie, und Node findet sie. Das Werkzeug meldet trotzdem
Konnte daten/einkauf.json nicht lesen., weil ein Pfad im Code vom Arbeitsverzeichnis aus gilt und
nicht vom Ordner der Datei. Lektion 2.4 hat diesen Unterschied erklärt, und mit
join(import.meta.dirname, …) wäre das Werkzeug davon unabhängig.
In Abschnitt 5 wird aus diesem Werkzeug ein Projekt mit eigener package.json, und danach startet
es auch mit npm start.
Zum Mitnehmen
Der Kurs ist mit Node 24 gebaut und braucht zu Hause Node 24.15 oder neuer, npm kommt mit. Gestartet wird ein Programm aus dem Ordner, in dem es liegt, sonst findet Node die Datei oder ihre Daten nicht.
Jetzt du
Basis Konto, kostenlosIm Editor änderst du die Beispiele dieser Lektion und lässt sie gleich laufen. So merkst du am schnellsten, ob es sitzt.
Dafür brauchst du das Basis Konto. Es kostet nichts, und ein Passwort gibt es auch nicht.
In diesem Kurs läuft dein Code auf einem Server. Dafür hat das Basis Konto 1 Stunde im Monat, mehr Zeit gibt es mit dem Premium Konto.
Was in dieser Lektion steckt
-
Artikel mit 3 Beispielen zum Ausprobieren
Steht hier, ohne Konto lesbar.