##環境変数を使う意義
①コード内のテキストをプレーンテキストから環境変数にすることでセキュリティ向上
②環境を変数に格納することでカスタマイズしやすくなる
##①セキュリティについて
APIキーなどの重要な情報をそのままコード内に書いてしまっていると、GitHubにアップした時に、丸見えになってしまう。
##②カスタマイズ性について
例)MongooseをMongoDBに接続する時
const mongoose = require('mongoose')
mongoose.connect('mongodb=//localhost:27017/task-manager-api', {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false
});
↓
このままだと、「'mongodb=//localhost:27017/task-manager-api'」という、ローカル環境のMongoDBに接続し続けることになる
→ローカル以外の環境にデプロイしても、ローカルのMongoDBに接続したままになってしまう。
##環境変数作成の準備
└── App
├── config //環境を保存するフォルダ
| └── dev.env //環境変数として認識されるファイル名
|
※gitにpushする時に、configファイルは.gitignoreしておく
・「dev.env」の設定
npmパッケージ「env-cmd」を利用して環境変数を利用できるようにする。
```
でインストール。
・「package.json」の変更
"scripts"に追記。
```json
"scripts": {
"start": "node src/index.js", //メインプログラムが書いているファイルへのパス
"dev": "env-cmd -f ./config/dev.env nodemon src/index.js" //環境を書いたファイルへのパスと、メインプログラムを動かす時のコード
},
※これで、ターミナルに「npm run dev」と入力するとアプリをスタートさせることができるようになる。
##環境変数の設定
・「dev.env」の設定
①Port番号 ②MongoDBとの接続 ③秘密にしたいAPIのキーの3つを環境変数に設定
PORT=3010
MONGODB_URL=mongodb://127.0.0.1:27017/task-manager-api
JWT_SECRET=thisisaseacretformyapp
・コード側での設定
※環境変数の呼び出しは「process.env.(環境変数)」①Port番号
元々「port = 3010」と記述していていた箇所を「port = process.env.PORT」へ変更
②MongoDBとの接続
元々「mongoose.connect('mongodb=//localhost:27017/task-manager-api', {...})」と記述していた箇所を「mongoose.connect(process.env.MONGODB_URL, {...})」へ変更
③秘密にしたいAPIのキー
元々「thisisaseacretformyapp」と記述していた箇所を「process.env.JWT_SECRET」へ変更