Menu
CoddyTech

Variables d’environnement

Fait partie de la section Les bases de Node.js du Journey Node.js de Coddy. Leçon 6 sur 33.

Certains paramètres dépendent de la personne qui exécute un programme, et non des mots qu’elle saisit après celui-ci.

Les variables d’environnement sont des chaînes nommées que le shell transmet à chaque programme. Node les place dans process.env. Une variable non définie vaut undefined. a ?? b renvoie a, sauf si a vaut undefined ou null ; dans ce cas, il renvoie b. Ainsi, process.env.CITY ?? 'Lisbon' vaut 'Lisbon' lorsque CITY n’est pas définie.

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

Sur un ordinateur portable, tu peux définir une variable pour une seule exécution en l’écrivant avant la commande : CITY=Oslo node weather.js affiche Weather for Oslo, et node weather.js seul affiche Lisbon. Les noms distinguent les majuscules des minuscules. Le terminal à côté de ton code ne définit aucune variable ; il affiche donc toujours la valeur par défaut.

challenge icon

Défi

Facile

Vos notes doivent indiquer à qui elles appartiennent. Le nom provient d’une variable d’environnement, un paramètre nommé que le shell transmet au programme, et non des mots saisis après la commande.

  1. Dans notes.js, dans la branche list, lisez la variable d’environnement NOTES_OWNER.
  2. Avant No notes yet, affichez une ligne de titre : Notes for suivie du nom du propriétaire. Lorsque NOTES_OWNER n’est pas définie, utilisez le mot you à la place d’un nom.

Avec NOTES_OWNER définie sur Ada, list affiche :

Notes for Ada
No notes yet

Sans NOTES_OWNER, la commande affiche :

Notes for you
No notes yet

Les autres commandes ne changent pas.

Essayez : saisissez list dans la zone après $ node notes.js et appuyez sur Entrée. Vous voyez Notes for you, puis No notes yet. Le terminal ici ne peut pas définir de variables d’environnement, donc vous voyez toujours you. Lorsque vous appuyez sur « Vérifier », les tests exécutent également list avec NOTES_OWNER définie sur Ada puis sur Grace, et attendent Notes for Ada et Notes for Grace. Sur un ordinateur portable, vous pourriez essayer avec NOTES_OWNER=Ada node notes.js list.

Essayez vous-même

// Votre outil de prise de notes commence ici.
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);
}

Toutes les leçons de Les bases de Node.js

Entraînez-vous par vous-même : Playground Express