環境変数
CoddyのNode.jsジャーニー「Node.jsの基礎」セクションの一部。レッスン 6/33。
プログラムを実行する人に属する設定もあります。プログラムの後に入力する言葉に属するものではありません。
環境変数は、シェルがすべてのプログラムに渡す名前付きの文字列です。Nodeでは、これらはprocess.envに格納されます。設定されていない変数はundefinedです。a ?? bはaを返します。ただし、aがundefinedまたはnullの場合は、bを返します。したがって、process.env.CITY ?? 'Lisbon'は、CITYが設定されていないときに'Lisbon'になります。
// CITY=Oslo node weather.js
const city = process.env.CITY ?? 'Lisbon';
console.log(`Weather for ${city}`);ノートパソコンでは、コマンドの前に変数を書けば、1回の実行だけに設定できます。CITY=Oslo node weather.jsはWeather for Osloを出力し、単にnode weather.jsを実行するとLisbonを出力します。名前では大文字と小文字が区別されます。コードの横にあるターミナルでは変数を設定していないため、常に既定値が表示されます。
チャレンジ
簡単メモには、誰のものかが分かるように名前を付けましょう。名前は環境変数から取得します。環境変数とは、シェルがプログラムに渡す名前付きの設定で、コマンドの後に入力した語句から取得するものではありません。
notes.jsのlist分岐で、環境変数NOTES_OWNERを読み取ります。No notes yetの前に、見出し行としてNotes forに所有者の名前を続けて表示します。NOTES_OWNERが設定されていない場合は、名前の代わりにyouを使います。
NOTES_OWNERをAdaに設定すると、listは次のように表示します。
Notes for Ada
No notes yetNOTES_OWNERが設定されていない場合は、次のように表示します。
Notes for you
No notes yetほかのコマンドは変更しません。
試してみましょう:$ node notes.jsの後のボックスにlistと入力してEnterキーを押します。Notes for you、続いてNo notes yetと表示されます。ここのターミナルでは環境変数を設定できないため、常にyouと表示されます。「確認」を押すと、チェックではNOTES_OWNERをAdaとGraceに設定してlistも実行し、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プレイグラウンド