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.
Desafio
FácilSuas 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.
- Em
notes.js, no ramolist, leia a variável de ambienteNOTES_OWNER. - Antes de
No notes yet, imprima uma linha de cabeçalho:Notes forseguida do nome do proprietário. QuandoNOTES_OWNERnão estiver definida, use a palavrayouem vez de um nome.
Com NOTES_OWNER definida como Ada, list imprime:
Notes for Ada
No notes yetSem NOTES_OWNER, imprime:
Notes for you
No notes yetOs 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
1Executando JavaScript no Node
Olá, NodeLendo o comandoArgumentos da linha de comandoComandosPratique por conta própria: Playground de Express