ここでHerokuのnode.jsの基本的な開始手順に従いました:
https://devcenter.heroku.com/categories/nodejs
これらの指示では、.gitignore node_modulesを作成するように指示されていないため、node_modulesをgitにチェックインする必要があります。gitにnode_modulesを含めると、開始アプリケーションが正しく実行されました。
私がより高度な例に従ったとき:
https://devcenter.heroku.com/articles/realtime-polyglot-app-node-ruby-mongodb-socketio 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」を実行すると、クラッシュが確認されます。問題ありません。変更をロールバックし、node_moduleをgitリポジトリに追加して、.gitignoreから削除しました。ただし、元に戻した後でも、デプロイ時に同じエラーメッセージが表示されますが、アプリケーションは再び正しく実行されています。「heroku ps」を実行すると、アプリケーションが実行されていることがわかります。
だから私の質問はこれを行う正しい方法は何ですか?node_modulesを含めるかどうか また、ロールバックしてもエラーメッセージが表示されるのはなぜですか?私の推測では、GitリポジトリはHeroku側で悪い状態にあるのでしょうか?
node_modules
。Herokuアプリにチェックインしないでください。