Node.jsアプリをHerokuにデプロイするときに詰まったこと
見よう見まねでやってたら色々躓いたのでメモ。
herokuへのpushに失敗する。
いつものようにaddしてcommitしてpushしたら怒られた。
! Push rejected, failed to compile Node.js app. ! Push failed
こんなログが出てたのでググったらgitで競合が発生したらpushに失敗するとのことなので、
見よう見まねでマージとかしてみたけど、解決せず。
(よく考えたら自分しか作業してないのに競合なんて起きるわけないよね。アホすぎて泣きそう)
落ち着いて長いログをよく見たら、以下のような記述が。
Some possible problems: - node_modules checked into source control https://blog.heroku.com/node-habits-2016#9-only-git-the-important-bits
node_modulesがソース管理下に置かれてるよ、と。
丁寧に参考URLまで書いてくれています。
要するに、モジュールなんかはpackage.jsonに記載されてるので、gitに追加しなくていいよと(たぶん)
指示通り、node_modulesフォルダをgitから除外したら無事解決しました。
なんでもかんでもgit add .で追加したらダメってことね。
アプリの実行でエラー
無事デプロイできたけど、アプリを開いたらなんかエラーになっていた。
落ち着いてherokuの管理コンソールからログを見ればよかったんだけど、
慌ててソースを眺めてたらなんとなく不審な点を発見。
どうやらインストールしたモジュールがpackage.jsonに記述されていなかったのが原因ぽい。
package.jsonにインストールしたモジュールとそのバージョンを記載して再度デプロイしたら無事うごきました。
モジュールをインストールするときは忘れずに --saveオプションをつけよう。
gitもHerokuもNode.jsも理解できていないままなんとなく進めてるから、
しょうもないことで躓いたりしている。
精進が足りない。