初めてHerokuでデプロイを行なったらPrecompiling assets failed.というエラーが出てきてしまったので備忘録として投稿します。こちらのエラー、原因は色々あるみたいですので、下記の解決法が全てではありません。
開発環境
MacOS 10.15.4
Ruby 2.5.1
Rails 5.2.3
最初に
エラーは目立つ部分が全てではない!!
remote: ! Precompiling assets failed.
こちらの一文は赤字で目立ちますが、実は大事な部分がターミナルをさかのぼると出てきます。
エラー1
さかのぼるとこの様なエラーが出てきました。
NoMethodError: undefined method `[]' for nil:NilClass
[]を見て思い出しました!!
環境変数セットしてなかった...
私はcredentials.yml.encを使っていたので、下記のコードで環境変数を設定致しました。
$ heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
デプロイします。
$ git push heroku master
##エラー2
上記で環境変数をセットしたにもかかわらず、またしてもPrecompiling assets failed.が出現しました。
ターミナルをさかのぼります。
エラー文が変わっている!!先ほどのエラーは解決できた様です。
続いてはこちら
Uglifier::Error: Unexpected token: name (任意の内容). To use ES6 syntax, harmony mode must be enabled with Uglifier.new(:harmony => true).
「ES6を使うにはUglifier.new(:harmony => true)でharmony modeを有効してください」ということらしいです。エラー文で検索するとすぐに対処法が出てきました。
config/environments/production.rbを編集します。
config/environments/production.rb
config.assets.js_compressor = :uglifier #削除
config.assets.js_compressor = Uglifier.new(harmony: true) #追加
gitに変更を上げて、再度
$ git push heroku master
無事デプロイできました!!
最後に
冒頭にも書きましたが、こちらのエラーはターミナルをさかのぼるとエラー内容が分かりますので、まずはそちらのエラー内容でググってみてください!
参考
https://teratail.com/questions/163759
https://qiita.com/terufumi1122/items/27bf288414569e13e050