No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Usando Nodemon y Dotenv

6/22
Recursos

Aportes 20

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Mi aporte:

Crear un archivo index.js en una carpeta nueva llamada config dentro de server

import dotenv from 'dotenv';

dotenv.config();

const { ENV, PORT } = process.env;

export default {
    env: ENV,
    port: PORT,
}

y en server.js solo llamo esa configuración

import express from 'express';

import config from './config';

const { env, port } = config;

const app = express();
if (env === 'development') {
    console.log(env);
}

app.get('*', (req, res) => {
    console.log('hola man')
    res.send({ hello: 'express'}).end();
});


app.listen(port, (err) => {
    if (err) console.log(err);
    else console.log(`Server running on port ${port}`);
});

Para que más adelante no haya inconvenientes para correr este proyecto en otra máquina o que se esté corriendo este proyecto en un commit posterior, es buena práctica dejar un .env.example para recordarle al desarrollador qué configuraciones de variables de entorno debe tener el proyecto

Comparto mis notas, con algunos aportes agregados. Agradezco feedback:

  • Nodemon: nodemon es una herramienta que ayuda a desarrollar aplicaciones. Cuando se detecten cambios de archivo en el directorio Nodemon reiniciara automáticamente la aplicación de node.

    npm install nodemon --dev
    
  • Teniendo instalado nodemon, podemos utilizarlo en nuestro script de desarrollo en el archivo de package.json

    "start:dev": "nodemon src/server/index"
    
  • Dotenv: es un modulo de dependencia que carga variables de entorno desde un archivo .env para utilizarlas con process.env. esto permite que podamos tener la configuración del entorno almacenada y separada del código

    npm install dotenv
    
  • para configurar dotenv tenemos que crear el archivo .env que es donde irán todas nuestras variables de entorno

    ENV=development // Entorno de desarrollo en el cual estaremos trabajando
    PORT=3000 // Puerto donde sera ejecutada la aplicacion
    
    
  • Es buena practica crear un archivo de configuración para eso , creamos un nuevo directorio llamado config y creamos un archivo llamado index.js. que tendrá lo siguiente:

    require('dotenv').config(); //requerimos dotenv a la vez que ejecutamos la funcion config
    
    const config = { // Definimos un objeto config
    	//llamamos la variable ENV desde el process.env y hacemos una validacion de seguridad
    	// para indicar que no estemos en modo de producción
    	env: process.env.ENV !== 'production',  
    	// de igual forma llamamos al puerto
    	port: process.env.PORT,
    };
    
    //exportamos el objeto config
    module.exports = { config };
    
    
  • En nuestro archivo de server.js importamos nuestro archivo de configuración que será el modulo donde están toda nuestra configuración de variables de entorno

    const { config } = require('./config');
    
  • quedando server.js de la siguiente forma:

    import express from 'express'
    //importamos el archivo config con las variables
    const { config } = require('./config');
    
    const app = express();
    
    //validación que sí estemos en desarrollo
    if(config.env === 'development'){
    	console.log('Development config');
    }
    
    app.get('*', (req, res) => {
    	res.send({ hello: 'express' });
    });
    
    app.listen(config.port, (err) => {
    	if (err) console.error();
    	else console.log(`Server running on port: ${config.port}`);
    })
    

console.log(server running in mode ${ENV} on port ${PORT});

Las variables de entorno son muy útiles para no exponer data sensible, como credenciales de conexión a bases de datos.

Excelente explicacion

Como les permite usar el ( import express from ‘express’ ) sin obtener un error? A mi solo me deja usar el require

como se llama el plugin para que salga el tag en las funciones ?

Interesante también que nos muestre la consola en que puerto estamos escuchando

console.log(`Server is running in port ${PORT}`);

Instalamos la dependencia nodemon para actualizar el server con cada cambio del código del back

nodemon

npm i nodemon

Recomendacion personal:

app.set('port', process.env.PORT || 3000)
app.listen(app.get('port'), (err) => {
    console.log(`Server on port ${app.get('port')}`)
})

DEPRECATED:

npm i nodemon --dev

RECOMIENDO

npm i nodemon --only=dev 

Es recomendable tener un archivo .env.example para indicar a futuros colaboradores qué variables de entorno utiliza el proyecto.
Importante también nunca subir el archivo .env a un repositorio, ya que dejaríamos la información sensible expuesta

Recuerden que .env nunca debe subirse al repositorio.
También recuerden crear el archivo .env.example, este si se sube y es una guía para otros devs de que variables se necesitan

CONFIG

ENV=
PORT=

Por lo que usamos babel no hay inconveniente a la hora de usar

import {function,variable} from dependencia

aunque tambien podriamos usar “require” para traernos modulos propios o dependencias

Instalamos nodemon -D para no tener que escribir el script en cada cambio (como el hot reload del frontend)
dotenv para poder guardar variables en el entorno del projecto y hacer escalable el projecto (significa dar flexibilidad al proyecto, es decir cambios ha futuro no romperar la App)
💚

@sampol.90 el enlace al repositorio de GitHub no existe 404

@sampol.90 qué gran profe, no terminé el course y ya me siento a gusto con sus explicaciones.

Dotenv: es un modulo de dependencia que carga variables de entorno desde un archivo .env para utilizarlas con process.env. esto permite que podamos tener la configuración del entorno almacenada y separada del código