最初に
APIを叩きに行く時にAPI KEY
などを直打ちしてしまっては、第3者に見られてしまう可能性がありますし、Github等にこのままあげると、漏洩のリスクがあります。一体どうすればいいのでしょう?
結論
結論から言うと、envファイル
を利用します(Github等に上げる際は.gitignore
に注意)。そして、envファイル
に記述した変数を読み込むためにdotenv
(envファイルに書いた設定を環境変数として簡単に読み込めるパッケージ管理ツール)をインストールし、活用します。
ひとこと
駆け出しエンジニア向けでハンズオン形式にしております。では、始めて行きましょう!
ここでは、forgeと言う為替情報APIを例に使います。無料で使えますので、興味ある人は登録して独自APIKEYをもらっておいて下さい。
ハンズオン
envファイルの作成
一番上のディレクトリで、新規ファイル作成を行い.env
と名前をつけます。これがenvファイル
(環境変数記述ファイル)です。 (環境変数のリストを出力したり、現在の環境を変えることなく異なる環境変数の下で他のコマンドを実行するのに使われる、etc。詳しくはWebで)
envファイルへ変数を記述
envファイル
を作成したら、中に記述していきましょう。ここでは、'API_KEY'を例に使います。モザイクがかかっている部分は各自のAPI KEYを当ててください。
まずデータ取得できてるか確認
色々調べてみると、よくprocess.env.***
と言う記述を目にします。なるほど、このように書けば環境変数にアクセスできるのだな!と目星がつきますので、一度console.log
で確認してみましょう。
しかし、
アクセスするにはちょっと設定が必要なんです。そのためにまずdotenv
をインストールしましょう。
dotenvのインストール
以下のコマンドをターミナルで打って、インストールしましょう
$npm install @nuxtjs/dotenv
一度、package.json
を確認してみましょう。
ちゃんとdependencies
に追記されていますね。
nuxt.config.jsへの追記
次に、nuxt.config.jsに必要な追記をしていきます。
書く位置は、module.exports
の上あたりにしましょう。
まず、nuxt.config.js
にdotev
をrequire
で読み込みます。
その次に、分割代入
で、.env
ファイルから必要な変数を読み込みます。
次に、export.default
の最終行へ移動し、キー名
をenv
そしてバリュー
を先ほど上の方で分割代入
で取り出した変数にします。
これで設定は完了です!
再確認
nuxt.config.js
を編集した時は、再立ち上げしないと変更が反映されません。
ターミナルでctrl
+ c
ボタンでサーバーを止めて、再起動してみましょう。
$npm run dev
すると、再びConsole
を確認すると、先ほどまでundefined
だったものが、きちんと自分で設定したAPI_KEY
の値になっているはずです。
API_KEY部分を変数に変更
では、ここでindex.vue
で直打ちしていたAPI_KEY
を変数に変えてみます。
テンプレートリテラル
記法でかけますので、process.env.API_KEY
と変更してみましょう。
そして保存して、ブラウザを確認。
すると、見事にAPIを叩いた結果がConsole
に表示されています。これで成功です!
(おまけ)もう一度やってみる
これで本来は終わりですが、復習も兼ねて別の文字列を.env
に追記して、確認してみましょう。
envファイルへ記述
ここでは、TEST
という変数にこんばんは!元気ですか?
と入れてみます。
ここで注意!変数宣言する時は、変数の後にスペースをきちんと入れること!もしTEST=
のようにTEST
と=
の間にスペースがないと、いくら他の設定をきちんとしても、undefined
となってしまいます。
nuxt.config.jsへ追記
次に先ほどと同じように、nuxt.config.js
の上の方で、分割代入
を使って、変数を読み込みます。
追記(2020/03/08)
以下のようにmodulesに記述が必要なようです。
modules: [
'@nuxtjs/dotenv'
],
またrequire(...).config is not a function
のようにエラーが出る方はimport env from 'dotenv'
と書き直してみてください
そしてenv
キーまで移動して、先ほど上で読み込んだ変数を追記。
またnuxt.config.js
を編集したので、一度サーバーを落として、再立ち上げしておきましょう。
consoleで確認してみる
練習用ですので、ここではmounted
の中にconsole.log
を書いて確認します。
process.env.***
でアクセスできるんですよね。
そしてブラウザを確認。
先ほどの文字列がきちんと表示されてますね!
2回も繰り返せば、もうなれたのではないでしょうか?
最後に
駆け出しエンジニアさんたちの間で、実際にこの辺りの設定の仕方を知っている方はあまり多くはないと思います。今回は簡単に触れた程度で、丁寧な説明は省きました。詳しくは公式サイト等をみて頂く方がいいと思います。Nuxt.jsを触り始めた方々の参考になれば幸いです。