既存の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に変わってるみたい)