ここでは、Heroku で Node.js を使用するための基本的な開始手順に従いました。
https://devcenter.heroku.com/categories/nodejs
これらの手順では、.gitignore node_modules を作成するように指示されていないため、フォルダーnode_modulesを Git にチェックインする必要があることを意味します。node_modulesを Git リポジトリに含めたところ、開始アプリケーションが正しく実行されました。
私がより高度な例に従ったとき:
- Node.js、Ruby、MongoDB、Socket.IO を使用したリアルタイムの多言語アプリケーションの構築
- https://github.com/mongolab/tractorpush-server (ソース)
フォルダーnode_modulesをファイル.gitignoreに追加するように指示されました。そこで、Git からフォルダーnode_modulesを削除し、それをファイル.gitignoreに追加してから、再デプロイしました。今回は、デプロイが次のように失敗しました。
-----> Heroku receiving push
-----> Node.js app detected
-----> Resolving engine versions
Using Node.js version: 0.8.2
Using npm version: 1.0.106
-----> Fetching Node.js binaries
-----> Vendoring node into slug
-----> Installing dependencies with npm
Error: npm doesn't work with node v0.8.2
Required: node@0.4 || 0.5 || 0.6
at /tmp/node-npm-5iGk/bin/npm-cli.js:57:23
at Object.<anonymous> (/tmp/node-npm-5iGk/bin/npm-cli.js:77:3)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.<anonymous> (/tmp/node-npm-5iGk/cli.js:2:1)
at Module._compile (module.js:449:26)
Error: npm doesn't work with node v0.8.2
Required: node@0.4 || 0.5 || 0.6
at /tmp/node-npm-5iGk/bin/npm-cli.js:57:23
at Object.<anonymous> (/tmp/node-npm-5iGk/bin/npm-cli.js:77:3)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.<anonymous> (/tmp/node-npm-5iGk/cli.js:2:1)
at Module._compile (module.js:449:26)
Dependencies installed
-----> Discovering process types
Procfile declares types -> mongod, redis, web
-----> Compiled slug size is 5.0MB
-----> Launching... done, v9
「heroku ps」を実行すると、クラッシュが確認されます。OK、問題ありません。変更をロールバックし、フォルダーnode_moduleを Git リポジトリに追加し、ファイル.gitignoreから削除しました。ただし、元に戻した後でも、デプロイ時に同じエラー メッセージが表示されますが、アプリケーションは再び正しく実行されるようになりました。「heroku ps」を実行すると、アプリケーションが実行中であることがわかります。
これを行う正しい方法は何ですか?フォルダーnode_modulesを含めるかどうか また、ロールバックしてもエラー メッセージが引き続き表示されるのはなぜですか? 私の推測では、Git リポジトリは Heroku 側で悪い状態になっていると思います。