2017-08-23 15 views
0

私は現在、Heroku上でWebpack 2/React/Reduxアプリケーションをデプロイしようとしていますが、私はローカルでビルドしてからHerokuにデプロイしようとしています。この問題は、Herokuが提供するPORT環境変数がビルド後に設定されているため、ローカルでビルドするとprocess.env.PORTの値が定義されないという問題があります。webpackのビルド後の環境変数の設定

私はHerokuサーバー上に構築できましたが、非常に遅く、60秒のブートタイムアウトがあります。

ビルド後に環境変数を設定する方法があるのだろうか?

答えて

0

あなたのアプリをHerokuでビルドするには、package.jsonにpostinstallスクリプトを使用するのが一般的です(詳細はofficial docsを参照してください)。あるいは、heroku-postbuildというnpmスクリプトを追加することもできます。

どちらの場合でも、環境変数$PORTはすでに設定されていて、ビルド時には60秒のタイムアウト制限はありません。

ビルド(afaik)後に実行時に環境変数を読み取ることができない場合、Webpackにprocess.env変数を置き換えないように指示する必要があります。しかし、ビルド時に定義された値で設定することができます(例えば、DefinePlugin, the EnvironmentPlugin or an aliasで設定可能)。

UPDATE:$PORT環境変数がpostinstall/heroku-postbuild実行時に設定されていない

、したがって、前に述べたように、ほとんどのコードにコンパイルしないことが推奨されていません。しかし、それでもpostinstall/heroku-postbuildスクリプトのいずれかを使用してHerokuでアプリを構築することをお勧めします。

ローカルでアプリケーションを実行したい場合、あなたはこのように、ご自身でご$PORT環境変数を設定する必要があります。

$> PORT=8000 node app.js