ピックアップ

環境ファイルの読み込みで、.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

で削除できます。

ピックアップ

おすすめ書籍

コメント一覧

コメントはまだありません。

コメント送信

コメントを残す

広告

おすすめ記事