
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=v1React (create-react-app)
# 頭にREACT_APPが必須
REACT_APP_API_VERSIOM=v1