LoginSignup
8
2

More than 3 years have passed since last update.

Nuxt.jsのnuxt.config.js内で、cross-envで設定した環境変数を使用する

Last updated at Posted at 2020-01-28

Nuxt.jsのプロジェクトを作成する際、開発環境や本番環境毎に環境変数を設定したい場合があります。

この環境変数を設定する方法として、 cross-envというパッケージが公式でも紹介されている ため、利用している方も多いかと思います。

しかし、cross-envで設定した環境変数を nuxt.config.js で使用できなかったため、解決方法をまとめておきます。

cross-envの設定方法などは、下記の記事などがわかりやすかったため、まだ導入していない方は参考にしてください。
[参考] Nuxtでcross-envを使い環境ごとに環境変数を分ける

環境変数用のファイルを作成

今回は例として、開発環境(development)と本番環境(production)の2つの環境を用意するものとします。
まずは、環境変数用のファイルを作成します。
config というディレクトリを用意し、その中に作成しました。

config/env.development.js
module.exports = {
  API_BASE_URL: 'http://localhost:3003/'
};
config/env.production.js
module.exports = {
  API_BASE_URL: 'https://api.hogehoge/'
};

nuxt.config.js 内で環境変数を設定

環境変数を設定します。

この設定を行うことで、 コード内では process.env.API_BASE_URL のように呼び出すことができますが、 nuxt.config.js 内ではまだ呼び出すための設定が完了していないため process.env.API_BASE_URL を使用することはできません。

例として、axiosのbaseURLに環境変数を設定してみます。

nuxt.config.js
const envSet = require(`./config/env.${process.env.NODE_ENV || 'development'}.js`);
module.exports = {

  ...

  axios: {
    baseURL: process.env.API_BASE_URL  // 環境変数を正しく読み取れない
  },

  ...

  env: envSet

  ...

}

nuxt.config.js 内での環境変数の使用方法

envSet をrequireしているので、ここから直接環境変数を読み込むことができます。

nuxt.config.js
const envSet = require(`./config/env.${process.env.NODE_ENV || 'development'}.js`);
module.exports = {

  ...

  axios: {
    baseURL: envSet.API_BASE_URL  // 環境変数を読み込み
  },

  ...

  env: envSet

  ...

}

以上!

8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2