3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Expressでの環境変数の設定

Posted at

##環境変数を使う意義
①コード内のテキストをプレーンテキストから環境変数にすることでセキュリティ向上
②環境を変数に格納することでカスタマイズしやすくなる

##①セキュリティについて
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」へ変更

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?