30代プログラム初心者がWEBエンジニアになる

30代プログラム初心者が、WEBエンジニアになるまでの奮闘を書いていきます。

Herokuでのデプロイで色々詰まった2

こんにちは、ぐっちと申します。

前回に引き続きHerokuでデプロイする際に遭遇した事について書いていきます。

Bundlerのバージョンによる不具合をなんとか解決し、もう一度 git push heroku master コマンドを実行した所、今度は以下の様なエラーが……

remote:        Running: rake assets:precompile
remote:        Yarn executable was not detected in the system.
remote:        rake aborted!
remote:        Uglifier::Error: Unexpected character '`'
...中略...
remote: 
remote:  !
remote:  !     Precompiling assets failed.
remote:  !
remote:  !     Push rejected, failed to compile Ruby app.

要約すると「予期しない文字 ` があるのでプリコンパイルに失敗しました」という事らしい

因みに…中略…の所には ` が使われているコードが沢山出てきました。

`  はバッククォートと言いJavascriptでテンプレートリテラルという記法で使用しています。

テンプレートリテラル記法とは物凄くざっくり言うと、' シングルクォートや " ダブルクォートで文字列を囲んだ時よりも、色々便利な事が出来る記法です。

どうやらそのバッククォートが悪さをしている様なので、解決策を求めて検索をしてみると、今回は思いの外早く目的の情報を見つけられました。

 

エラーログに Uglifier::Error とありますが、Uglifierと言うのはRailsデフォルト搭載のJS軽量化gemで、このgemはJavascriptのES5までの機能に対応しており、テンプレートリテラル等のES6の機能を使用しているとエラーが出るとの事

production.rbの設定変更で対応が可能の様で 

これを

config/environments/production.rb
config.assets.js_compressor = :uglifier

こうして

config/environments/production.rb
config.assets.js_compressor = Uglifier.new(harmony: true)

 無事コンパイルも出来 git push heroku master コマンドは成功しました。

しかし、本番環境で動かすまでには色々ありました。

次回は本番環境で動かしてからの問題について書きたいと思います。

 

 

ここまで読んでくださり、ありがとうございました。

 ツイッターで日々の学習をつぶやいています(@Yamaguc45844169