Postępowałem zgodnie z podstawowymi instrukcjami dotyczącymi uruchamiania pliku node.js na Heroku tutaj:
https://devcenter.heroku.com/categories/nodejs
Te instrukcje nie nakazują tworzenia .gitignore node_modules, a zatem sugerują, że moduły node_modu powinny być zalogowane do git. Po dołączeniu do węzła modułów w git moja aplikacja dla początkujących działała poprawnie.
Kiedy poszedłem za bardziej zaawansowanym przykładem:
https://devcenter.heroku.com/articles/realtime-polyglot-app-node-ruby-mongodb-socketio https://github.com/mongolab/tractorpush-server (źródło)
Polecił mi dodać węzeł_modules do .gitignore. Więc usunąłem node_modules z git, dodałem go do .gitignore, a następnie ponownie wdrożyłem. Tym razem wdrożenie się nie powiodło:
-----> 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
Uruchomienie „heroku ps” potwierdza awarię. Ok, nie ma problemu, więc wycofałem zmianę, dodałem node_module z powrotem do repozytorium git i usunąłem go z .gitignore. Jednak nawet po przywróceniu nadal pojawia się ten sam komunikat o błędzie podczas wdrażania, ale teraz aplikacja działa ponownie poprawnie. Uruchomienie „heroku ps” mówi mi, że aplikacja jest uruchomiona.
Więc moje pytanie brzmi: jaki jest właściwy sposób to zrobić? Uwzględnić moduły_węzła czy nie? I dlaczego nadal pojawia się komunikat o błędzie podczas wycofywania? Domyślam się, że repozytorium git jest w złym stanie po stronie Heroku?
node_modules
melduj się w aplikacjach Heroku.