Menu
CoddyTech

Variáveis de ambiente

Parte da seção Fundamentos de Node.js do Journey de Node.js da Coddy. Lição 6 de 33.

Algumas configurações pertencem à pessoa que executa um programa, não às palavras que ela digita depois dele.

Variáveis de ambiente são strings nomeadas que o shell fornece a todos os programas. O Node as coloca em process.env. Uma variável não definida é undefined. a ?? b retorna a, a menos que a seja undefined ou null; nesse caso, retorna b. Portanto, process.env.CITY ?? 'Lisbon' retorna 'Lisbon' quando CITY não está definida.

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

Em um laptop, você define uma variável para uma única execução escrevendo-a antes do comando: CITY=Oslo node weather.js exibe Weather for Oslo, e node weather.js sem nada antes exibe Lisbon. Os nomes diferenciam maiúsculas de minúsculas. O terminal ao lado do seu código não define nenhuma variável, então sempre mostra o valor padrão.

challenge icon

Desafio

Fácil

Suas anotações devem indicar a quem pertencem. O nome vem de uma variável de ambiente, uma configuração nomeada que o shell passa ao programa, e não das palavras digitadas após o comando.

  1. Em notes.js, no ramo list, leia a variável de ambiente NOTES_OWNER.
  2. Antes de No notes yet, imprima uma linha de cabeçalho: Notes for seguida do nome do proprietário. Quando NOTES_OWNER não estiver definida, use a palavra you em vez de um nome.

Com NOTES_OWNER definida como Ada, list imprime:

Notes for Ada
No notes yet

Sem NOTES_OWNER, imprime:

Notes for you
No notes yet

Os outros comandos não mudam.

Experimente: digite list na caixa depois de $ node notes.js e pressione Enter. Você verá Notes for you e, em seguida, No notes yet. O terminal daqui não pode definir variáveis de ambiente, então você sempre verá you. Quando você pressionar “Verificar”, as verificações também executarão list com NOTES_OWNER definida como Ada e como Grace, e esperarão Notes for Ada e Notes for Grace. Em um laptop, você poderia experimentar com NOTES_OWNER=Ada node notes.js list.

Experimente você mesmo

// Sua ferramenta de anotações começa aqui.
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);
}

Todas as lições de Fundamentos de Node.js

Pratique por conta própria: Playground de Express