Seguí las instrucciones básicas de inicio para node.js en Heroku aquí:
https://devcenter.heroku.com/categories/nodejs
Estas instrucciones no le dicen que cree un .gitignore node_modules, y por lo tanto implica que node_modules debe registrarse en git. Cuando incluyo node_modules en git, mi aplicación de inicio se ejecutó correctamente.
Cuando seguí el ejemplo más avanzado en:
https://devcenter.heroku.com/articles/realtime-polyglot-app-node-ruby-mongodb-socketio https://github.com/mongolab/tractorpush-server (fuente)
Me dio instrucciones para agregar node_modules a .gitignore. Así que eliminé node_modules de git, lo agregué a .gitignore y luego lo volví a implementar. Esta vez el desplegado falló así:
-----> 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
Ejecutar "heroku ps" confirma el bloqueo. Ok, no hay problema, así que revertí el cambio, agregué node_module al repositorio git y lo eliminé de .gitignore. Sin embargo, incluso después de revertir, sigo recibiendo el mismo mensaje de error en la implementación, pero ahora la aplicación se está ejecutando correctamente nuevamente. Ejecutar "heroku ps" me dice que la aplicación se está ejecutando.
Entonces mi pregunta es ¿cuál es la forma correcta de hacer esto? ¿Incluir node_modules o no? ¿Y por qué seguiría recibiendo el mensaje de error cuando retrocedo? Supongo que el repositorio de git está en mal estado en el lado de Heroku.
node_modules
en las aplicaciones Heroku.