Menu
CoddyTech

Umgebungsvariablen

Teil des Abschnitts Node.js-Grundlagen der Node.js-Journey von Coddy. Lektion 6 von 33.

Manche Einstellungen gehören zu der Person, die ein Programm ausführt, nicht zu den Wörtern, die sie danach eingibt.

Umgebungsvariablen sind benannte Zeichenketten, die die Shell jedem Programm übergibt. Node legt sie in process.env ab. Eine nicht gesetzte Variable ist undefined. a ?? b ergibt a, es sei denn, a ist undefined oder null; dann ergibt es b. Deshalb ist process.env.CITY ?? 'Lisbon' gleich 'Lisbon', wenn CITY nicht gesetzt ist.

// CITY=Oslo node weather.js
const city = process.env.CITY ?? 'Lisbon';
console.log(`Weather for ${city}`);

Auf einem Laptop setzt du eine Variable für einen einzelnen Durchlauf, indem du sie vor den Befehl schreibst: CITY=Oslo node weather.js gibt Weather for Oslo aus, und node weather.js ohne weitere Angaben gibt Lisbon aus. Bei Namen wird zwischen Groß- und Kleinschreibung unterschieden. Das Terminal neben deinem Code setzt keine Variablen, deshalb zeigt es immer den Standardwert an.

challenge icon

Aufgabe

Einfach

Deine Notizen sollten den Namen der Person enthalten, der sie gehören. Der Name stammt aus einer Umgebungsvariable, einer benannten Einstellung, die die Shell an das Programm übergibt, und nicht aus den Wörtern, die nach dem Befehl eingegeben werden.

  1. Lies im Zweig list in notes.js die Umgebungsvariable NOTES_OWNER aus.
  2. Gib vor No notes yet eine Kopfzeile aus: Notes for , gefolgt vom Namen des Besitzers. Wenn NOTES_OWNER nicht gesetzt ist, verwende statt eines Namens das Wort you.

Wenn NOTES_OWNER auf Ada gesetzt ist, gibt list Folgendes aus:

Notes for Ada
No notes yet

Wenn NOTES_OWNER nicht gesetzt ist, wird Folgendes ausgegeben:

Notes for you
No notes yet

Die anderen Befehle bleiben unverändert.

Probiere es aus: Gib list in das Feld nach $ node notes.js ein und drücke die Eingabetaste. Du siehst Notes for you und dann No notes yet. Das Terminal hier kann keine Umgebungsvariablen setzen, daher siehst du immer you. Wenn du auf „Prüfen“ klickst, wird bei den Prüfungen auch list mit NOTES_OWNER, das auf Ada und Grace gesetzt ist, ausgeführt. Erwartet werden dabei Notes for Ada und Notes for Grace. Auf einem Laptop würdest du es mit NOTES_OWNER=Ada node notes.js list ausprobieren.

Probier es selbst

// Dein Notizentool beginnt hier.
const [command, ...words] = process.argv.slice(2);
const text = words.join(' ');

if (command === 'add') {
    console.log(`Adding: ${text}`);
} else if (command === 'list') {
    console.log('No notes yet');
} else {
    if (command) {
        console.error(`Unknown command: ${command}`);
    }
    console.error('Usage: node notes.js <command> [words]');
    process.exit(1);
}

Alle Lektionen in Node.js-Grundlagen

Übe selbstständig: Express-Playground