Para desplegar una aplicación node.js en heroku es necesario crearla una cuenta o iniciar sesión.

Descarga la herramienta Heroku Toolbelt para poder utilizar la línea de comandos (CLI) de heroku.

Luego de la instalación desde la terminal ejecutar:

$ heroku login

Te solicitará las credenciales de tu cuenta.

Si aún no tienes un proyecto puedes clonar un ejemplo desde github.

$ git clone https://github.com/heroku/node-js-getting-started.git
$ cd node-js-getting-started

De lo contrario deberás seguir los siguientes pasos:

Crear un archivo llamado Procfile (sin extención), el contenido es el siguiente:

web: node index.js

Reemplazar index.js por el nombre de tu aplicación que puede ser server.js o app.js.

El archivo Procfile sirve para ejecutar el comando en el servidor de heroku.

En tu archivo package.json debes incluir esta línea:

"engines": {
    "node": "0.10.x"
}

Con esa configuración indicas que versión de node ejecutar heroku en el servidor.

En tu aplicación debes definir el puerto en el que se ejecutará la aplicación.

app.set('port', (process.env.PORT || 5000))

En puerto 5000 es la alternativa si no se ha definido la variable de entorno PORT.

Es necesario que agregemos en el proyecto la referencia del repositorio de heroku.

$ heroku git:remote -a heroku-project-name

Donde heroku-project-name es el nombre del proyecto en heroku.

Con estos simples cambios en tu proyecto ya puedes hacer el despliegue.

Batará con agregar los cambios y hacer commit al repositorio.

$ git add .
$ git commit -m "Nuevos cambios"
$ git push heroku master

Notas:

  • Es necesario que el push sea de la rama master, si el código que deseamos desplegar esta en otra rama por ejemplo develop es necesario ejecutar el comando: git push heroku develop:master.
  • Si no has creado el proyecto en heroku desde la web entonces ejecuta el comando: heroku create --http-git y ya no será necesario el comando heroku git:remote -a heroku-project-name.

Fuente: https://devcenter.heroku.com/articles/getting-started-with-nodejs