JS(Node.js)における環境変数の取り扱い
2022/04/07
環境変数
環境変数とはプログラム内で定義されている変数(定数)ではなく、プログラムを動かす環境側で定義されている変数(定数)のことです。
key情報などの重要な定数はコードに直接記入するのではなく、環境変数として管理するのが一般的です。
Node.jsにおける環境変数
Node.jsにおいて環境変数はすべてprocess.env
に格納されます。
例えば、KEY=thisiskey
という環境変数が設定されていたとすれば
console.log(process.env.KEY)
// 'thisiskey'と出力
となります。
では、Node.jsにおいて環境変数を設定するにはどのようにすればよいのでしょうか?
Node.jsにおける環境変数の設定方法
Node.jsにおける環境変数の設定方法は主に以下の2通りあります。
- コマンドライン上から入力
.env
とdotenv
を使用
コマンドライン上から環境変数を設定
環境変数はコマンドライン上から直接設定することが可能です。
$ KEY=thisiskey node index.js
ただし、Windowsでこれをやるとコマンドプロンプトが停止するらしいので、
一般的にはcross-env
を使用し環境変数を指定します。
$ cross-env KEY=thisiskey node index.js
よく見かけるcross-env
は環境変数を設定する際におけるプラットフォームの差異を吸収してくれるものです。
.envとdotenvを使用して環境変数を設定
コマンドライン上で環境変数を設定してもよいですが、数が多くなると大変です。
一般的には.env
ファイルに環境変数をまとめることが多いです。
例)
KEY=sample
API=http://localhost:8000
ただし、.env
に記入しただけではprocess.env
に環境変数は格納されないので...
プログラム内でdotenv
ライブラリを使用します。
// .env内の環境変数がprocess.envに格納される
require('dotenv').config()
console.log(process.env.KEY)
console.log(process.env.API)
// -> sample, http://localhost:8000
注意点として、.env
にはあまり流出させたくない情報を記載することもあるので、基本的にgit管理には含めないようにしたほうがよいです。
gitに含めたいのであれば、.env.example
のような公開してもいいような別ファイルを用意し、gitに含めることをおすすめします。
例)
↓のような.env
は流出したらまずいので、gitに含めない
PASSWORD=sdlfkjaded
代わりに.env.example
のようなファイルを用意して、gitに含める
PASSWORD=passwordexample
これにより新たにgit clone
した側は、.env.example
のような.env
を用意すればいいことを認識することができます。
補足:最近はフレームワークが標準で対応している場合も多い
フレームワークによっては、dotenv
などを使用しなくても自動的に.env
ファイルから環境変数を取り込んでくれるものもあります。
ただし、.env
に自由に記載できるわけではなく、定数の頭文字に特定の文字が必須の場合が多いです。
Vue (vue-cli)
# 頭にVUE_APPが必須
VUE_APP_API_VERSION=v1
React (create-react-app)
# 頭にREACT_APPが必須
REACT_APP_API_VERSIOM=v1