A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Deploy en Heroku

25/27
Recursos

Aportes 10

Preguntas 7

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Es muy bueno mostrar en los cursos lor errores.
Esto demuestra que a todos nos pasa.
Me siento mejor 馃槂

add-role

Con respecto a la migracion de add-role, esta falla porque tenemos el userSchema ya actualizado con el campo role. Este campo ya fue agregado en la primer migracion que fue exitosa

Hacer deploy es f谩cil decian鈥
Hacer deploy es felicidad decian鈥
Hacer deploy te toma 1 minuto decian鈥

Agregar a Heroku un proyecto existente: heroku git:remote -a nombre-del-repositorio

Crear un nuevo proyecto de Heroku: heroku create

Crear BD en Heroku: heroku addons:create heroku-postgresql:hobby-dev

Documentaci贸n de la BD postgresql en Heroku: heroku addons:docs heroku-postgresql

Informaci贸n de la base de datos elegida: heroku pg:info

Se debe establecer la variable de entorno DATABASE_URL que da Heroku para poder conectarnos a la BD, sin embargo, tambi茅n podemos usar la misma variable en el entorno de producci贸n y para ello se agrega al archivo .env.

PORT=3000
DB_USER='john'
DB_PASSWORD='admin123'
DB_HOST='localhost'
DB_NAME='my_store'
DB_PORT='5432'
DATABASE_URL='postgres://john:[email protected]:5432/my_store'

En config/config.js se establece una nueva variable llamada isProd la cual ser谩 verdadera 煤nicamente si la variable es production, es decir, va identificar si estamos en producci贸n. Tambi茅n se agrega dbUrl donde se leer谩 DATABASE_URL que env铆a Heroku o que tambi茅n podemos establecer en entorno de desarrollo.

require('dotenv').config();

const config = {
  env: process.env.NODE_ENV || 'dev',
  isProd: process.env.NODE_ENV === 'production',
  port: process.env.PORT || 3000,
  dbUser: process.env.DB_USER,
  dbPassword: process.env.DB_PASSWORD,
  dbHost: process.env.DB_HOST,
  dbName: process.env.DB_NAME,
  dbPort: process.env.DB_PORT,
  dbUrl: process.env.DATABASE_URL,
};

module.exports = { config };

Con esto se puede modificar postgres.pool.js haciendo una condici贸n en la URI si estamos en desarrollo o producci贸n:

const { Pool } = require('pg');
const { config } = require('../config/config');

const options = {};

if (config.isProd) {
  options.connectionString = config.dbUrl;
  options.ssl =  {
    rejectUnauthorized: false
  };
} else {
  const USER = encodeURIComponent(config.dbUser);
  const PASSWORD = encodeURIComponent(config.dbPassword);
  const URI = `postgres://${USER}:${PASSWORD}@${config.dbHost}:${config.dbPort}/${config.dbName}`;
  options.connectionString = URI;
}

const pool = new Pool(options);

module.exports = pool;

En el archivo libs/sequelize.js tambi茅n se puede hacer la modificaci贸n de URI cambi谩ndola a **config.dbUrl**. Adem谩s se agregar la configuraci贸n de ssl cuando se encuentre en producci贸n haciendo la validaci贸n correspondiente y es importante utilizar dialectOptions ya que es una configuraci贸n respectiva de postgres.

const { Sequelize } = require('sequelize');

const { config } = require('../config/config');
const setupModels = require('../db/models/');

const options = {
  dialect: 'postgres',
  logging: config.isProd ? false : true,
}

if (config.isProd) {
  options.dialectOptions = {
    ssl: {
      rejectUnauthorized: false
    }
  }
}

const sequelize = new Sequelize(config.dbUrl, options); // Se crea una instancia de Sequelize, gestiona el pooling.

setupModels(sequelize);
// sequelize.sync();

module.exports = sequelize;

En el archivo de migraciones tambi茅n se deben hacer las modificaciones necesarias para poder correrlas, db/config.js:

const { config } = require('../config/config');

module.exports = {
  development: {
    url: config.dbUrl,
    dialect: 'postgres',
  },
  production: {
    url: config.dbUrl,
    dialect: 'postgres',
    dialectOptions: {
      ssl: {
        rejectUnauthorized: false,
      },
    },
  },
};

Para realizar el deploy creamos y nos movemos a una nueva rama llamada production, y despu茅s ejecutamos git push heroku production:main.

Posteriormente se corre una migraci贸n con heroku run npm run migrations:run, cabe mencionar que Heroku solo instala las dependencias de producci贸n (no de desarrollo). Es necesario que sequelize-cli sea dependencia de producci贸n.

Al principio no me permitia iniciar los servicios ni la pagina me aceptaba conectarse, revisando lo que le faltaba era la dependencia de sequelize.
donde revise el error fue con el comando: heroku logs --tail

Y por esto es que no se hace deploy el viernes a las 5 馃ぃ

min 22:22 hasta el 22:32 hay un error de edicion

Pfff que clase tan m谩s loca. Pero est谩 genial que se muestren los errores en vivo.

Ya no lo subi pero estoy muy feliz por el curso.

Para crear una rama ahora se recomienda

git switch -c nuevaRama

Amo cuando no quitan los errores en las clases