高木のブログ

既存のRailsプロジェクトにAdminLTEを追加して、Herokuにデプロイをしたらコケた

2020/09/06

問題

既存のRailsプロジェクトにAdminLTEを追加して、Herokuにデプロイをしたらコケた

$ git push heroku master

...省略...

remote:        [4/4] Building fresh packages...
remote:        error /tmp/build_4fd7fe15/node_modules/admin-lte: Command failed.
remote:        Exit code: 127
remote:        Command: npm run plugins
remote:        Arguments:
remote:        Directory: /tmp/build_4fd7fe15/node_modules/admin-lte
remote:        Output:
remote:        /bin/sh: 1: npm: not found
remote:        info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

...省略...

バージョン

  • Rails: 6.0.3.2
  • AdminLTE: 3.0.5

原因

とりあえずnpmがないらしい

AdminLTEを入れる前も必要なはずだったのにコケていなかった理由はわかっていない

解決方法

buildpacks:addコマンドでNode.jsのビルドパックを追加してあげればいい
ただ、主要言語のビルドパックは最後に追加する必要がある(今回の場合はRubyのビルドパック)

現状はRubyのビルドパックが追加されている

$ heroku buildpacks
=== masamune-20200114 Buildpack URL
heroku/ruby

--index 1オプションを付けて、Node.jsのビルドパックを1番目に追加する

$ heroku buildpacks:add --index 1 heroku/nodejs
Buildpack added. Next release on masamune-20200114 will use:
  1. heroku/nodejs
  2. heroku/ruby
Run git push heroku main to create a new release using these buildpacks.

1にNode.js、2にRubyのビルドパックが登録されている状態になっていればOK

最後に書いてあるとおり、git push heroku masterでデプロイしてあげれば成功する
(Herokuではもうデフォルトブランチがmasterからmainに変わってるみたい)

参考


Pixela