(ささいな問題ですが、日本語でも英語でもエラーメッセージから検索しても原因がすぐわからなかったのでメモを共有しておきます)
現象
環境
動作実施日 2018/11/1
Ruby on Rails 5.1
Ruby 2.4.1
yarn 1.7.0
node 9.11.1
Heroku
(バージョンをアップデートできていないのはご容赦ください、、)
開発しているRailsアプリをHerokuにデプロイするためにgit push heroku master
すると、エラーが出ました。
デプロイ時のログ抜粋
remote: -----> Installing node-v8.10.0-linux-x64
remote: -----> Detecting rake tasks
remote: -----> Preparing app for Rails asset pipeline
remote: Running: rake assets:precompile
remote: yarn install
remote: rake aborted!
remote: Command failed with status (127): [yarn install...]
remote: /tmp/build_85d6f255f087d15f0a493571234f5109/lib/tasks/yarn.rake:3:in `block in <top (required)>'
remote: /tmp/build_85d6f255f087d15f0a493571234f5109/vendor/bundle/ruby/2.4.0/gems/rake-12.0.0/exe/rake:27:in `<top (required)>'
remote: Tasks: TOP => assets:precompile => js_deps_install
remote: (See full trace by running task with --trace)
remote:
remote: !
remote: ! Precompiling assets failed.
remote: !
remote: ! Push rejected, failed to compile Ruby app.
remote:
remote: ! Push failed
remote: Verifying deploy...
(以下略)
yarnまわりのようですが、package.jsonのenginesも正しく記載できています。
参考)
https://qiita.com/taaatk/items/25fa2c969d033ffc8a12
対策
エラーコード127はだいたいの場合、ファイルが見つからないことです。
というわけで調べてみると
heroku buildpacks
実行結果
1. heroku/ruby
2. heroku/nodejs
この順番が変なようです。入れ替えるために、いちどbuildpacksをremoveしてaddしなおしましょう。
heroku buildpacks:remove heroku/ruby
heroku buildpacks:add heroku/ruby
実行結果
1. heroku/nodejs
2. heroku/ruby
これで問題なくデプロイできるようになりました。