HerokuでLaravel-Mixを利用する際の環境変数

HerokuでLaravel Mixを使っている際に、ビルドに失敗する時があり調べた結果、環境変数を追加するだけで対策出来たのでメモ。

症状

Herokuのビルドパックには heroku/nodejsheroku/phpを入れておき、順番はnode.jsが先。

1
2
3
4
$ heroku buildpacks -a app-name
=== app-name Buildpack URLs
1. heroku/nodejs
2. heroku/php

この状態でpushしてデプロイするも、npmのインストールなどは走るがLaravel Mixのコンパイルが走らない状態(たぶん)。
ビルドログを見ると以下のようなエラーが出ている。

1
2
3
Additional dependencies must be installed. This will only take a moment.
warning " > browser-sync-webpack-plugin@1.2.0" has unmet peer dependency "webpack@^1 || ^2 || ^3".
Finished. Please run Mix again.

依存関係が解消出来てないとかなんとか?

解決策

ググると以下の情報。

環境変数に、YARN_PRODUCTIONfalseで追加してやるだけ。

環境変数を追加してやることで、devDependenciesから依存関係を取得するように指示してやる事が出来るよう。

First, set YARN_PRODUCTION to false using the following command. This tells Heroku to install the devDependencies in your package.json, but leaves NODE_ENV as production.

Google翻訳

まず、次のコマンドを使用してYARN_PRODUCTIONをfalseに設定します。これは、あなたのpackage.jsonにdevDependenciesをインストールするようにHerokuに指示しますが、NODE_ENVをプロダクションとして残します。

記事の通り、上手く行ってなかった環境に環境変数を追加してやると無事、コンパイルされるようになった。

   このエントリーをはてなブックマークに追加