Heroku#

Logo Heroku

Última edición el día 2022-10-26 a las 00:31.

Despliegue de aplicaciones en Heroku.

Instalar Heroku CLI y desplegar aplicación#

Crear proyecto y configurar#

Crear un repositorio GIT#

  • Paso 1: ejecutar en la raiz del proyecto git init

  • Paso 2: ejecutar en la raiz del proyecto: heroku git:remote -a taskmanagerpytonicus

Desplegar aplicación#

  • Paso 1: añadir todos los datos: git add .

  • Paso 2: comitear los cambios: git commit -am "primer commit"

  • Paso 3: Pushear los datos en heroku: git push heroku master

Comprobar que se ha desplegado#

  • En la pestaña overview se verá un panel en el que podemos observar a la derecha un mensaje Build Succeeded

  • Si pinchamos arriba a la derecha en More y luego en Logs podemos ver si hay algún error.

NodeJS en Heroku#

Existen un par de errores comunes en proyectos NodeJS, vamos a resolverlos:

  • Error de puertos: editar el archivo index.js y cambiar el puerto por lo siguiente:

 1const mongoose = require("mongoose");
 2const app = require('./app');
 3// cambiar puerto por estas dos opciones:
 4const port = process.env.PORT || 3977;
 5
 6mongoose.connect("mongodb+srv://guillermo:1234@cluster0.zicnrri.mongodb.net/?retryWrites=true&w=majority", {
 7    useNewUrlParser: true,
 8    useUnifiedTopology: true,
 9}, (err, res)=>{
10    try{
11        if(err){
12            throw err;
13        }else{
14            console.log("Se ha establecido la conexión a la base de datos");
15        }
16    }catch(error){
17        console.error(error);
18    }
19});
20
21
22app.listen(port, () => {
23    console.log(`Servidor funcionando en: http://localhost:${port}`);
24});
  • Ausencia de comando start: editar package.json y añadir start en scripts:

 1{
 2    "name": "curso_node",
 3    "version": "0.0.1",
 4    "description": "Rest api node",
 5    "main": "index.js",
 6    "scripts": {
 7        "start": "node index.js", // esta linea no siempre se crea con npm init
 8        "test": "echo \"Error: no test specified\" && exit 1"
 9    },
10    "author": "Guillermo Granados Gómez",
11    "license": "MIT",
12    "dependencies": {
13        "express": "^4.18.1",
14        "mongoose": "^6.5.2"
15    }
16}