サーバーの環境変数を保持するために.envファイルを使用しています。これは、フォアマンスタートでサーバーを実行した場合に機能します。ただし、nodemonでは機能しません。
サーバーを変更すると自動的に再起動するため、代わりにnodemonを使用したいと思います。 nodemonを.envファイルで動作させるにはどうすればよいですか?
production Procfileがあります:
web: node web.js
だから私はProcfile_devファイルを次のように作成しました:
web: nodemon web.js
そして、私が開発環境にいるとき、私は実行します:
$ foreman start -f Procfile_dev
それは魅力のように機能し、生産に影響を与えません。
次のコマンドを使用して、nodemonに.envを直接使用させることができます。
$: env $(cat .env) nodemon app.js
.envに変更を加えた場合は再起動する必要があり、.envファイルにスペースがあると気に入らないことに注意してください。
npm i dotenv
.env
ファイルとその中に変数を作成します実行するスクリプトを追加します
"dev": "nodemon -r dotenv/config ./app/index.js " or
"start": "node -r dotenv/config ./app/index.js "
npm run dev
またはnpm run start
を使用してアプリを実行します
Node(io.js 1.6以降)の最近のバージョンでは、起動時にモジュールを要求するために-r
フラグを渡すことができます。これにより、.env
を直接ロードできます。 nodemonの--exec
を使用して:
nodemon --exec 'node -r dotenv/config'
これには、npmパッケージ dotenv
がインストールされている必要があります。
ローカル構成変数を.envファイルに配置し、次のコマンドを使用してnodemonとともにforemanを実行します。
$ foreman run nodemon web.js
スレッドネクロマンシー!
grunt-env を使用して、heroku構成から環境変数をロードします。
つのステップで
# .env ======
PORT=5000
WHO_AM_I="Who Knows"
"dev": "nodemon -r dotenv/config src/app.js"
> process.env.varible_nameを使用して、定義した変数にアクセスできます。
Heroku Procfile
変更:web:node app.jsからweb:nodemon app.js
-wキーを使用して、nodemonに追加で監視する対象を指定します。
"scripts": {
"dev": "env-cmd nodemon -w app -w *.js -w .env server.js"
}
再実行を忘れないでくださいnpm run dev