Я дотримувався основних інструкцій щодо початку роботи для node.js на Heroku тут:
https://devcenter.heroku.com/categories/nodejs
Ці інструкції не говорять вам про створення .gitignore node_modules, а отже, мається на увазі, що node_modules слід перевірити, щоб git. Коли я включаю node_modules в git, моя програма для запуску працювала правильно.
Коли я наслідував більш просунутий приклад на:
https://devcenter.heroku.com/articles/realtime-polyglot-app-node-ruby-mongodb-socketio https://github.com/mongolab/tractorpush-server (джерело)
Він доручив мені додати node_modules до .gitignore. Тому я видалив node_modules з git, додав його до .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.