Variabili d’ambiente
Fa parte della sezione Fondamenti di Node.js del percorso Node.js di Coddy. Lezione 6 di 33.
Alcune impostazioni appartengono alla persona che esegue un programma, non alle parole che digita dopo di esso.
Le variabili d'ambiente sono stringhe denominate che la shell passa a ogni programma. Node le inserisce in process.env. Una variabile non impostata è undefined. a ?? b restituisce a, a meno che a non sia undefined o null; in quel caso restituisce b. Quindi process.env.CITY ?? 'Lisbon' è 'Lisbon' quando CITY non è impostata.
// CITY=Oslo node weather.js
const city = process.env.CITY ?? 'Lisbon';
console.log(`Weather for ${city}`);Su un portatile, puoi impostarne una per una singola esecuzione scrivendola prima del comando: CITY=Oslo node weather.js stampa Weather for Oslo, mentre node weather.js senza argomenti stampa Lisbon. I nomi distinguono tra maiuscole e minuscole. Il terminale accanto al tuo codice non imposta variabili, quindi mostra sempre il valore predefinito.
Sfida
FacileLe tue note dovrebbero indicare a chi appartengono. Il nome proviene da una variabile d'ambiente, un'impostazione con nome che la shell passa al programma, non dalle parole digitate dopo il comando.
- In
notes.js, nel ramolist, leggi la variabile d'ambienteNOTES_OWNER. - Prima di
No notes yet, stampa una riga di intestazione:Notes forseguita dal nome del proprietario. QuandoNOTES_OWNERnon è impostata, usa la parolayouinvece di un nome.
Con NOTES_OWNER impostata su Ada, list stampa:
Notes for Ada
No notes yetSenza NOTES_OWNER, stampa:
Notes for you
No notes yetGli altri comandi non cambiano.
Prova: digita list nel riquadro dopo $ node notes.js e premi Invio. Vedrai Notes for you, poi No notes yet. Il terminale qui non può impostare variabili d'ambiente, quindi vedrai sempre you. Quando premi «Verifica», i controlli eseguono anche list con NOTES_OWNER impostata su Ada e su Grace e si aspettano Notes for Ada e Notes for Grace. Su un portatile, proveresti con NOTES_OWNER=Ada node notes.js list.
Provalo tu
// Il tuo strumento per gli appunti inizia qui.
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);
}
Tutte le lezioni di Fondamenti di Node.js
1Eseguire JavaScript con Node
Ciao, NodeLeggere il comandoArgomenti della riga di comandoComandiEsercitati da solo: Playground Express