Ho seguito le istruzioni di base per iniziare per node.js su Heroku qui:
https://devcenter.heroku.com/categories/nodejs
Queste istruzioni non ti dicono di creare un .gitignore node_modules, e quindi implicano che node_modules dovrebbe essere archiviato su git. Quando includo node_modules in git, la mia applicazione introduttiva è stata eseguita correttamente.
Quando ho seguito l'esempio più avanzato in:
https://devcenter.heroku.com/articles/realtime-polyglot-app-node-ruby-mongodb-socketio https://github.com/mongolab/tractorpush-server (fonte)
Mi ha detto di aggiungere node_modules a .gitignore. Quindi ho rimosso node_modules da git, l'ho aggiunto a .gitignore, quindi ri-distribuito. Questa volta la distribuzione non è riuscita in questo modo:
-----> 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
L'esecuzione di "heroku ps" conferma l'incidente. Ok, nessun problema, quindi ho ripristinato la modifica, ho aggiunto node_module al repository git e l'ho rimosso da .gitignore. Tuttavia, anche dopo il ripristino, visualizzo ancora lo stesso messaggio di errore durante la distribuzione, ma ora l'applicazione funziona di nuovo correttamente. L'esecuzione di "heroku ps" mi dice che l'applicazione è in esecuzione.
Quindi la mia domanda è qual è il modo giusto per farlo? Includi node_modules o no? E perché dovrei ancora ricevere il messaggio di errore quando eseguo il rollback? Suppongo che il repository git sia in cattivo stato dal lato Heroku?
node_modules
accedere alle app Heroku.