thumbnail

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通りあります。

  • コマンドライン上から入力
  • .envdotenvを使用

コマンドライン上から環境変数を設定

環境変数はコマンドライン上から直接設定することが可能です。

$ KEY=thisiskey node index.js

ただし、Windowsでこれをやるとコマンドプロンプトが停止するらしいので、 一般的にはcross-envを使用し環境変数を指定します。

$ cross-env KEY=thisiskey node index.js

よく見かけるcross-envは環境変数を設定する際におけるプラットフォームの差異を吸収してくれるものです。

.envとdotenvを使用して環境変数を設定

コマンドライン上で環境変数を設定してもよいですが、数が多くなると大変です。 一般的には.envファイルに環境変数をまとめることが多いです。 例)

.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に含めない

.env
PASSWORD=sdlfkjaded

代わりに.env.exampleのようなファイルを用意して、gitに含める

.env.example
PASSWORD=passwordexample

これにより新たにgit cloneした側は、.env.exampleのような.envを用意すればいいことを認識することができます。

補足:最近はフレームワークが標準で対応している場合も多い

フレームワークによっては、dotenvなどを使用しなくても自動的に.envファイルから環境変数を取り込んでくれるものもあります。 ただし、.envに自由に記載できるわけではなく、定数の頭文字に特定の文字が必須の場合が多いです。

Vue (vue-cli)

.env
# 頭にVUE_APPが必須
VUE_APP_API_VERSION=v1

React (create-react-app)

.env
# 頭にREACT_APPが必須
REACT_APP_API_VERSIOM=v1
author picture

Mitsuru Takahashi

京都市内にてフリーランスエンジニアとして活動しています。

detail

Profile

author picture

Mitsuru Takahashi

京都市内にてフリーランスエンジニアとして活動しています。

detail

© 2022 mitsuru takahashi