結論
パスが間違っている可能性が高い。
前提
Nodejsを活用し、環境変数を取得する際には、
dotenvを使用すると良い。
// app.js
require('dotenv').config();
const env = process.env;
console.log(env.USERNAME);
// .env
USERNAME=hogehoge
しかし、上記のように実施したとして、しか表示されない場合、
何がおかしいのか悩む。
> node ./src/app.js
undefined
デバッグ
require('dotenv').config();
console.log(require('dotenv').config());
console.log(process.env.USERNAME);
requireしているところをconsole.log()
でくくるとエラーが出る。
error: Error: ENOENT: no such file or directory, open '/Users/~ディレクトリ階層~/プロジェクト名/.env'
プロジェクトのトップに.envファイルがありませんということ。
修正前(./src/.env)
❯ tree -L 2 -a
.
├── LICENSE
├── README.md
├── package.json
├── src
│ ├── .env
│ ├── app.js
│ └── memo
└── yarn.lock
修正後(./.env)
❯ tree -L 2 -a
.
├── LICENSE
├── README.md
├── package.json
├── .env
├── src
│ ├── .env
│ ├── app.js
│ └── memo
└── yarn.lock
言い訳
vscode上で作業をしているとき、
ファイルをコマンドでなく、GUIでババっと作った。
そうした際に、.env
はルートディレクトリに作るという無意識が働いてしまっていた。
なので、ルートディレクトリにある前提でいろいろな確認作業をしてしまい、
わからなくなった。
今回のことで、デバッグ手法が一つわかったのでとても勉強になった。