Next.jsでdotenvを使って環境変数を参照する

Next.jsに入門しました。ドキュメントを読みながら、サンプルアプリケーションを書いてみていたところ、環境変数の読み方にハマったので、調べた結果を備忘録として書いておくことにします。

Next.jsのプロジェクトの作成

特に迷うことはなく、 Learn - Getting Started | Next.js に従って、進めました。

npm run dev

を実行して、http://localhost:3000 にアクセスし、ページが表示できるところまでは簡単にイケると思います。

dotenvとは

dotenvは、npmパッケージとして公開されているOSSで、.envというファイルに記述された環境変数をプログラムから参照する仕組みを提供するパッケージです。 アプリケーションが動作するホストやコンテナに環境変数を定義することなく、.envファイルさえあれば、手軽に環境変数を管理できるようになります。

(似たような仕組みに、direnvというのもありますが、こちらはnpmではないですね…)

Next.jsのアプリケーションからdotenv経由で環境変数を参照する

手順としては、

  • dotenv-webpackをインストールする
  • next.config.jsにwebpackのプラグインとしてdotenvを使用する設定を書く
  • .envを書く
  • アプリケーションから環境変数にアクセスする

という流れなります。

dotenv-webapckをインストールする

npm install --save dotenv-webpack

を実行し、インストールします。

next.config.jsに、webpackのプラグインとしてdotenvを使用する設定を書く

next.config.jsに、

const path = require('path')
const dotenv = require('dotenv-webpack');

module.exports = {
  webpack: config => {
    config.plugins = config.plugins || []

    config.plugins = [
      ...config.plugins,

      // Read the .env file
      new dotenv({
        path: path.join(__dirname, '.env'),
        systemvars: true
      })
    ]

    return config
  }
}

を書きます。

.envを書く

Next.jsのプロジェクトに移動し、touch .envを実行します。 このファイルに、

FOO=BAR
HOGE=FUGA

のように環境変数を定義します。

アプリケーションから環境変数にアクセスする

.envに書いた環境変数は、アプリケーションからは、process.env.XXXXXXという形式でアクセスすることができます。 上記の例では、それぞれ、

process.env.FOO
process.env.HOGE

となります。


Next.jsでdotenvを使って環境変数を参照する方法についてまとめてみました。 自分、もっぱらバックエンドの人間ですが、Next.jsで自由にアプリケーションが書けるよう、頑張ってみます。