概要
HerokuにRailsアプリをデプロイしようとした際に、アセットプリコンパイルでエラーが発生しました。logを確認したところ、Uglifier
というgemが原因でエラーが発生したことがわかったので、解決法を記述致します。
エラーの原因
Uglifierは、JavaScriptを最小化するためのRubyライブラリです。しかし、UglifierはES6のJavaScriptを完全にはサポートしていないため、ES6のシンタックスを含むJavaScriptファイルがあるとエラーが発生します。
解決策: UglifierからTerserへの切り替え
解決策はUglifierの代わりにTerser
というgemを使用することで、この問題を解決致しました。
TerserはES6のシンタックスをサポートしています。
1. terserを追加
Gemfileからuglifier
を削除し、代わりにterser
を追加します。
gem 'terser'
2. production.rbの中身を変更
次にconfig/environments/production.rb
の以下の部分を変更。
production.rb
config.assets.js_compressor = :uglifier
上記を下記のように変更します。
production.rb
config.assets.js_compressor = :terser
3. bundle installを実行
最後に、bundle installを実行して、変更を反映させます。
これで、ES6のシンタックスを含むJavaScriptファイルでもアセットプリコンパイルエラーが発生しなくなるはずです。