Desplegar aplicaciones en un entorno productivo es un paso crucial para cualquier desarrollador. Heroku, una plataforma como servicio (PaaS) te ofrece una forma sencilla y eficiente para lograr esto. En esta guía, te llevaremos de la mano a través del proceso de instalación del Heroku CLI, la creación de proyectos, y el despliegue de tus aplicaciones en este entorno. Prepara tu terminal y empecemos.
¿Cómo instalar Heroku CLI?
Para empezar, necesitarás crear una cuenta en Heroku y descargar el CLI de Heroku. Este cliente de comandos te permitirá interactuar con tu cuenta desde la terminal. Si utilizas un sistema basado en Unix como Mac, Linux o WSL en Windows, es recomendable instalarlo usando una línea de comandos que se encuentra en la documentación oficial de Heroku. Encontrarás instrucciones específicas para distintos sistemas operativos como Mac, Windows y Ubuntu.
Descarga el instalador adecuado para tu sistema operativo desde la documentación oficial.
Ejecuta el comando para verificar la instalación:
heroku --version
¿Cómo iniciar sesión en Heroku desde la terminal?
Una vez instalado el Heroku CLI, lo siguiente es hacer un Heroku login. Este comando abrirá una página en el navegador donde podrás autorizar el acceso de la CLI a tu cuenta. Al finalizar este paso, tu terminal estará lista para trabajar con Heroku.
heroku login
¿Cómo crear un proyecto en Heroku?
Ahora que tienes acceso a tu cuenta, puedes crear un nuevo proyecto simplemente desde la terminal. Heroku se encargará de crear una instancia y un repositorio Git para tu aplicación.
Ejecuta el siguiente comando en la terminal:
heroku create
Comprueba el nuevo repositorio con:
git remote -v
Esto te dará también una URL para acceder a tu aplicación, donde verás tu primer "Hello World".
¿Cómo configurar el entorno para el despliegue?
Es importante asegurarse de que tu aplicación está configurada correctamente para el entorno de Heroku. Aquí algunos pasos clave:
Definir la versión de Node.js:
Edita el archivo package.json de tu proyecto para especificar la versión de Node.js que deseas usar en producción:
"engines":{"node":"14.x"}
Probar la aplicación localmente:
Para verificar que todo funciona correctamente antes de desplegar:
heroku local web
Este comando te permitirá correr la aplicación en un entorno local similar a Heroku.
Configurar el puerto dinámico:
Heroku asigna puertos dinámicos a las aplicaciones, por lo que tu aplicación debe adaptarse a ello. Modifica tu código para leer variables de entorno:
constPORT= process.env.PORT||3000;
Crear y modificar archivos necesarios:
Crea un archivo Procfile para definir el proceso de inicio de tu aplicación:
web: npm start
¿Cómo desplegar la aplicación?
Con todos los ajustes realizados, ya estás listo para hacer el despliegue:
Mantén tu repositorio limpio: Asegúrate de que no estás incluyendo archivos innecesarios añadiéndolos al .gitignore.
Commit y push a Heroku:
Une tus ramas de desarrollo a main u otra rama de producción.
¡Es hora del despliegue! Empuja tus cambios a Heroku:
git push heroku main
Una vez finalizado el proceso de despliegue, tu aplicación estará lista para funcionar en la URL proporcionada por Heroku.
¿Qué hacer si algo sale mal?
Heroku te ofrece herramientas para depurar cualquier problema que pueda surgir en tu aplicación. Utiliza el siguiente comando para obtener un registro detallado de errores:
heroku logs --tail
Este comando te ayudará a identificar y solucionar problemas dentro de tu aplicación desplegada.
Ahora que tienes las herramientas esenciales para desplegar aplicaciones en Heroku, te animo a que sigas explorando y perfeccionando tus habilidades de despliegue en la nube. ¡El mundo del desarrollo está lleno de oportunidades para innovar y mejorar!
Justo también tuve este error, gracias por esta info
Me pasó exactamente lo mismo, subamos este comentario para ayudar a otros jajajaja
Pa linuts ahi esta
curl https://cli-assets.heroku.com/install.sh | sh
tambien funciona en mac
Para los que quieran instalar Heroku.
enlce de Instalación Windows, macOS y Ubuntu 16+
Me pasó que no me corría bien en el ambiente de producción porque la mayoría de las dependencias las instalé en el ambiente de desarrollo. Chequen bien eso para que no les pase como a mí.
Acá mi app.
@EquipoDePlatzi El 28 de Noviembre va a dejar de ser gratis Heroku, por ahora funciona, faltan 10 dias para que se vuelva Pago. Estaría bueno actualizar esta clase, con alternativas a HEROKU con su explicación del deploy.
😥
Por supuesto. Revisa por fa de nuevo la clase y la siguiente, hablamos del tema y los pasos que podemos seguir. :muscle:
El comando que menciona el profesor para ver los errores internos es:
heroku logs --tail
gracias, necesitaba ese comando
para mis bugs
Lstimosamente Heroku ya no es gratis, pero hay una opción mil veces más facil y es railway, en el siguiente video que me encontré en Youtube lo hacen en 12 minutos, con 10 minutos de chachara y solo 2 para realizar el deplyment
Tuve un error desplegando y luego de mucho buscar fue porque mis módulos de servicios no los llame ejem: products.service.js sino productsService.js y al parecer el estándar debe ser con el . (no lo hice así porque en vscode el archivo me lo tomaba como un Angular no un Javascript entonces pensé que estaba malo) pero al cambiarlo y volver a hacer el push ya me funciono, esta es mi API en Heroku
Yo deje todo con:
productsService.js
productsRouter.js
productsSchema.js
y sin problema en el deploy
Heroku ya no es más gratuito en 2024, hay nuevas alternativas hacia este cambio:
Back4app
Render
Digital Ocean App Platform
Platform.sh
gracias por el aviso !
Para saber la version de node que usan escribir en consola:
node -v
Teniendo en cuenta que ya no es posible publicar en heroku free, deberias considerar actualizar el curso en este aspecto, mas alla de eso, brutal el curso!
Si quieres cambiarle el nombre a tu app desde el cli de heroku:
$ heroku apps:rename <mi-api-rest>
Le comparto mi aplicación de backend desplegada en heroku.
Aplicacion en heroku
Si se pudo, a la primera y sin quejarme. 💚
Yo hice el despliegue con Vercel, gratis, fácil, rápido y no pide ingresar tarjeta. Seguí este tutorial: How to Deploy an Express/Node App to Vercel | Express/Node Vercel Deployment
✅ Este es mi API
⚠️ Solo en este caso active los CORS para cualquier dominio
No entendí la negación de
!origin
Me confunde porque si queremos que pueda acceder al mismo origen en si debería ser
origin
según mi lógica. Alguien que me corrija
Como estás?
Esto me generó bastante confusión también y por lo que estuve investigando esto se debe a que al realizar una solicitud request dentro del mismo origen en este caso el puerto 3000, en vez de devolver el origen se devuelve undefined.