Menu
CoddyTech

Переменные окружения

Часть раздела Основы Node.js путешествия по Node.js на Coddy. Урок 6 из 33.

Некоторые настройки принадлежат человеку, запускающему программу, а не словам, которые он вводит после неё.

Переменные окружения — это именованные строки, которые оболочка передаёт каждой программе. Node помещает их в process.env. Неустановленная переменная имеет значение undefined. a ?? b возвращает a, если только a не равно undefined или null; в таком случае возвращается b. Поэтому process.env.CITY ?? 'Lisbon' имеет значение 'Lisbon', если CITY не задана.

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

На ноутбуке можно задать переменную для одного запуска, указав её перед командой: CITY=Oslo node weather.js выводит Weather for Oslo, а обычная команда node weather.js выводит Lisbon. Имена чувствительны к регистру. Терминал рядом с вашим кодом не задаёт переменных, поэтому в нём всегда отображается значение по умолчанию.

challenge icon

Задание

Легко

В ваших заметках должно быть указано, кому они принадлежат. Имя берётся из переменной окружения — именованной настройки, которую оболочка передаёт программе, — а не из слов, введённых после команды.

  1. В notes.js, в ветке list, прочитайте переменную окружения NOTES_OWNER.
  2. Перед No notes yet выведите строку-заголовок: Notes for , за которой следует имя владельца. Если NOTES_OWNER не задана, используйте вместо имени слово you.

Если NOTES_OWNER задана значением Ada, команда list выводит:

Notes for Ada
No notes yet

Если NOTES_OWNER не задана, вывод будет таким:

Notes for you
No notes yet

Остальные команды не меняются.

Попробуйте: введите list в поле после $ node notes.js и нажмите Enter. Вы увидите Notes for you, а затем No notes yet. Этот терминал не позволяет задавать переменные окружения, поэтому вы всегда видите you. Когда вы нажмёте «Проверить», проверки также выполнят list с NOTES_OWNER, заданной значениями Ada и Grace, и будут ожидать Notes for Ada и Notes for Grace. На ноутбуке вы могли бы попробовать это с помощью NOTES_OWNER=Ada node notes.js list.

Попробуйте сами

// Здесь начинается ваш инструмент для заметок.
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);
}

Все уроки раздела Основы Node.js

Потренируйтесь самостоятельно: Песочница Express