ピックアップ
環境ファイルの読み込みで、.envファイルの読み込みではなく、環境設定値が読み込まれてしまっていた件
Nodeで環境ファイルを読み込む際に、
なぜか、
.env
のファイルの値ではなく、
なぜか別の値が入っているなとなり、
その点について、
値を確認していくと、
環境設定値が入ってしまっていたので、
その点を調査して確認していた。
この時の確認などを、
今後も必要に応じてやりそうな気がするので、
自分用にメモ。
起きた事象は?
Nodeで
require('dotenv').config({ path: './.env' });
の感じで、
環境ファイルを読み込んでいたが、
なぜか、
実行環境の環境ファイルの値にならない
という点がおきました。
上記の実行環境では、
- 環境ファイル自体は正しく配置されている
- 読み込みパスについても問題ない
- 新規設定値についてはうまく読み込める
という形でした。
例えば、
環境設定ファイルとして、
.env
を準備して、
TEST="sample data"
のようにすると、
うまく読み込めて値が使えました。
しかし、
他のプロジェクトなどで使っていた環境設定変数があれば、
なぜか、
このプロジェクトの環境ではない値が、
取得されてしまうという事象でした。
シェルの環境変数を読んでしまってた
環境変数自体に、
なんで別の値が入っていたかというと、
シェルの環境変数を読んでしまっていた
というシンプルなことでした。
確認コマンド
env
または、
それをgrepして、
env | grep -E 'EXIST_VARIABLE'
のように確認できます。
やってることのイメージとしては、
┌──────────────────┐
│ OS / シェルの環境変数(envコマンドで確認) │
└───────┬──────────┘
│(Node.js 起動時に引き継がれる)
┌───────▼──────────┐
│ process.env(Node.js内部で参照できる) │
└───────▲──────────┘
│
dotenv が .env を読み込んで追加
こんな感じ。
シンプルだけど、
入れてないとか思ってたけれど、
シェルの環境変数にしてしまっていたものが、
影響を及ぼしていたので、
その点、学びになった。
シェルの環境変数の削除(一時的に、現在のターミナルのみ)
環境変数の削除自体は、
一時的に消すだけなら、
unset EXIST_VARIABLE
で削除できます。
おすすめ書籍
コメント一覧
コメントはまだありません。
コメントを残す