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:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

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 鈥榚xpress鈥 ) 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 鈥渞equire鈥 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