はじめに
GitHubにgit pushした後、
Herokuにgit push herokuをした際に
remote: !
remote: ! Precompiling assets failed.
remote: !
とエラーが発生した。
環境
Rails(5.1.4)
エラーを確認する
//省略
Running: rake assets:precompile
remote: Yarn executable was not detected in the system.
remote: Download Yarn at https://yarnpkg.com/en/docs/install
remote: rake aborted!
remote: Sprockets::FileNotFound: couldn't find file 'html2canvas/dist/html2canvas.js' with type 'application/javascript'
//省略
remote: !
remote: ! Precompiling assets failed.
remote: !
エラーを見るとyarnがインストールが出来ていないと表示があります。
ローカル環境ではyarnはインストールされているはずになんでだろうと調べてみました。
解決方法
Rails5.1以上ではyarnサポートされていないため,
yarnを機能させるためには`Heroku上にyarnをインストールしないといけない。rubyビルドパックではyarn installがないためにエラーが発生してしまうそうです。
ではどうすればいいか、、、、。
解決方法は私の場合、至って簡単でした。
下記のコマンドを叩けば解決しました。
$ heroku buildpacks:add --index 1 heroku/nodejs
Heroku buildpacksheroku/nodejsが追加されます。
これを叩けばHeroku上にyarnがinstallされ
再度、git push herokuにエラーが吐き出される事なく成功します。
$ heroku buildpacks
====Buildpack URLs
1. heroku/nodejs
2. heroku/ruby
$heroku buildpacksで確認すると
heroku/nodejsが追加されていると思います。
これで完了です。
終わりに
今回のエラーは初歩的なことかもしれませんが
基本的にRailsだけでgit push herokuをしていた方。
javascript、パッケージがHeroku上にインストールできない、などのHeroku上でのprecomplieエラーの解決に
手助けできたらなと思います。
参考URL
https://www.bokukoko.info/entry/2017/12/07/000000
https://qiita.com/eRy-sk/items/cee652a24f67498bfe9f