‫Instructor: Bienvenido de nuevo.
‫En este video, aprenderá todo sobre
‫las variables de entorno.
‫Entonces, qué son, cómo los configuramos y cómo los usamos.
‫Ahora bien, esto no se trata exactamente de Express, realmente
‫tiene que ver con el desarrollo del nodo JS en general, pero
‫realmente lo necesitamos para avanzar en el
‫proyecto, por lo que este es un buen momento
‫para hablar de esto.
‫Entonces, el nodo JS, o las aplicaciones Express,
‫pueden ejecutarse en diferentes entornos.
‫Y los más importantes son el entorno de desarrollo y
‫el entorno de producción.
‫Esto se debe a que, dependiendo del entorno, podríamos
‫usar diferentes bases de datos, por ejemplo, o
‫podríamos activar o desactivar el inicio de sesión,
‫o podríamos activar o desactivar la
‫depuración, o realmente todo tipo de configuraciones diferentes
‫que podrían cambiar dependiendo del desarrollo que estemos. estás en.
‫Entonces, nuevamente, los más importantes son el desarrollo
‫y el entorno de producción.
‫Pero hay otros entornos
‫que pueden usar equipos más grandes.
‫Entonces, este tipo de configuración que
‫acabo de mencionar, como diferentes bases de datos o inicio de
‫sesión activado o desactivado, se basará en variables de entorno.
‫Ahora, de forma predeterminada, Express establece el entorno para el desarrollo, lo que
‫tiene mucho sentido porque eso es lo que estamos haciendo cuando
‫comenzamos un nuevo proyecto.
‫Entonces, solo por el bien
‫de la demostración, echemos un vistazo a
‫esa variable, y lo haremos aquí en el servidor.
‫Así que recuerda que todo lo que no esté relacionado
‫con Express lo haremos fuera de la aplicación. Archivo JS.
‫Así que solo usamos este aquí para configurar nuestra aplicación.
‫Así que solo usamos este para configurar todo
‫lo que tiene que ver con la aplicación Express.
‫Pero las variables de entorno están realmente fuera
‫del alcance de Express.
‫Así que hagamos rápidamente una consola. inicie sesión
‫aquí de la aplicación. obtener
‫y luego terminar.
‫Déjelo guardar aquí y aquí abajo puede ver el desarrollo.
‫Permítame borrar la consola aquí, guardarla nuevamente, y
‫aquí nuevamente verá el desarrollo.
‫Así que ese es el entorno en el que nos encontramos actualmente.
‫Y entonces ves que esta aplicación. getenv nos dará
‫la variable de entorno env.
‫Entonces, en resumen, las variables de entorno son variables globales que se utilizan
‫para definir el entorno en el que se ejecuta
‫una aplicación de nodo.
‫Así que este lo establece Express, pero
‫el propio nodo JS en realidad establece una gran cantidad de entornos.
‫Ahora, esta variable env aquí en realidad está configurada por
‫Express, pero el nodo JS en sí también
‫establece muchas variables de entorno.
‫Entonces, echemos un vistazo a esos también.
‫Estos se encuentran ubicados en process. env.
‫Guárdelo y aquí
‫tenemos un montón de variables diferentes y no
‫las revisaré todas, pero veamos que realmente son un montón de ellas,
‫y el nodo usa la mayoría de
‫ellas internamente.
‫Por ejemplo, una tarea para el directorio
‫de trabajo actual aquí en esta variable de
‫entorno y realmente un montón de otras cosas como puede ver.
‫Por ejemplo, mi carpeta de
‫inicio o mi nombre de inicio de sesión, verá el script que usamos para iniciar este
‫proceso, así que en realidad hay un montón de cosas que, por
‫alguna razón, el nodo JS necesita internamente.
‫Ahora, estas variables, provienen del módulo central
‫del proceso y estamos configuradas en el momento en que comenzó el proceso.
‫Y como puede ver, no tuvimos que requerir el módulo de
‫proceso correctamente.
‫Simplemente está disponible en todas partes de forma automática.
‫Ahora en Express, muchos paquetes
‫dependen de una variable especial llamada nodo N.
‫Entonces es una variable
‫que es una especie de convención que debería definir
‫si estamos en desarrollo o en modo de producción.
‫Sin embargo, Express realmente no define
‫esta variable, por lo que tenemos que hacerlo manualmente.
‫Y hay varias formas en las que
‫podemos hacerlo, pero comencemos con la más
‫fácil que es usar la terminal.
‫Así que voy
‫a terminar este proceso aquí, borrarlo, y cuando comenzamos este proceso
‫por última vez lo hicimos usando npm start.
‫Y npm start a su vez significa ¿dónde está?
‫Por lo que significa servidor nodemon.
‫Y copiemos esto realmente aquí.
‫Entonces usamos el servidor nodemon. js para iniciar el proceso.
‫Pero si desea establecer
‫una variable de entorno para este proceso,
‫debemos planificar previamente esa variable para este comando.
‫Entonces decimos
‫nodeenv, que es esa variable especial
‫de la que acabo de hablar, es igual
‫al desarrollo.
‫Y si comienzo este proceso ahora, echemos un vistazo.
‫Y ahora mismo tenemos aquí el nodo N configurado para desarrollo.
‫Y este es el resultado de hacer esta consola. proceso de cierre de
‫sesión. env.
‫Y esa
‫variable que tenemos aquí en realidad proviene de ese comando.
‫Y de hecho podemos definir aún más si quisiéramos.
‫Entonces, digamos que X es 23 solo para
‫fines de prueba, inicie el proceso y ahora verá que la
‫variable de entorno X está adjunta a esta cadena 23, de acuerdo.
‫Nuevamente, muchos paquetes en npm que usamos
‫para el desarrollo Express en
‫realidad dependen de esta variable de entorno.
‫Entonces, cuando nuestro proyecto esté listo
‫y lo vayamos a implementar, entonces deberíamos cambiar el nodo N y la variable a producción.
‫Y lo haremos, por supuesto, una vez que implementemos
‫el proyecto al final del curso.
‫Así que configuramos el nodo
‫N y X como variables de entorno, pero podemos hacer mucho más.
‫Y eso se debe a que
‫usualmente usamos variables de entorno como ajustes de configuración para nuestras aplicaciones.
‫Entonces, siempre que nuestra aplicación necesite alguna configuración para cosas
‫que podrían cambiar según el entorno en el que se ejecuta
‫la aplicación, usamos variables de entorno.
‫Por ejemplo, podríamos usar diferentes bases de datos para el
‫desarrollo y las pruebas hasta que podamos definir una
‫variable para cada una y luego activar la
‫base de datos correcta de acuerdo con el entorno.
‫También podríamos configurar datos confidenciales
‫como contraseñas y nombre de usuario usando variables de entorno.
‫Ahora bien, no es realmente práctico
‫definir siempre todas estas variables en el
‫comando donde iniciamos la aplicación.
‫Así que
‫imagina que tuviéramos 10 variables ambientales y no sería realmente práctico
‫tener que escribirlas todas aquí dentro de este comando.
‫Entonces, en cambio, lo que hacemos es crear un archivo de configuración.
‫Así que déjame seguir adelante
‫y crear config. env.
‫Y env es realmente
‫la convención para definir un archivo que son estas variables de entorno.
‫Y el código VS realmente lo
‫reconoce y coloca este ícono de configuración directamente en el archivo.
‫Así que ahora definamos esta variable
‫aquí y peguemos aquí.
‫Y también
‫podemos utilizar algunos de estos datos confidenciales que acabo de mencionar.
‫Digamos que el
‫usuario es Jonas en minúsculas y la contraseña es uno, dos, tres, cuatro, cinco, seis.
‫Ahora, como puede ver, estos nombres de variables
‫suelen estar siempre en mayúsculas.
‫Así que esa es una especie de convención que usamos.
‫Ahora, en su código VS probablemente
‫todo el texto sea blanco, por lo que no tiene resaltado de sintaxis.
‫Y tengo eso porque ellos usan esto. env extensión aquí.
‫Entonces, si quieres tu. env para que se vean bien así,
‫por favor, instale ese.
‫Entonces, tenemos la contraseña de usuario,
‫también definamos el puerto en el que nuestra aplicación debería ejecutarse.
‫Así que también es
‫una especie de variable estándar que suele estar en un. env archivo como este.
‫Y establezcamos este en 8.000.
‫Ahora, ¿cómo conectamos esto realmente? env archivo con nuestra aplicación
‫de nodo?
‫Entonces necesitamos alguna
‫forma de leer estas variables de este archivo y
‫luego guardarlas como variables de entorno.
‫Porque en este momento esto es solo
‫un archivo de texto y el nodo JS no tiene forma de saber que estas variables están aquí.
‫Y para eso, el estándar es usar
‫un paquete npm llamado. env.
‫Entonces npm install. env, está
‫bien,
‫entonces vayamos
‫a nuestro servidor y realmente solicitemos ese módulo.
‫Así que const. env es igual a
‫require. env, tan simple.
‫Y aquí abajo
‫simplemente podemos usar esta variable
‫dotenv llamada config y luego allí solo tenemos que pasar un objeto para
‫especificar la ruta donde se encuentra nuestro archivo de configuración.
‫Entonces ruta, config
‫dotenv.
‫Entonces, lo que hará
‫este comando ahora es
‫leer nuestras variables del archivo y guardarlas en las variables de entorno del nodo JS.
‫Así que ahora ejecutemos npm start y
‫eso debería bloquear todas nuestras variables
‫de entorno en la consola debido a esta línea de código.
‫Entonces, esperemos, y de hecho aquí tenemos nodeenv,
‫tenemos el puerto, las
‫contraseñas y, por supuesto, el resto de los datos deberían estar en algún
‫lugar aquí dentro de esta lista gigantesca.
‫Realmente no importa dónde está aquí.
‫Entonces, el usuario era en realidad Jonas. io ya, por lo que deberíamos
‫llamar a este nombre de usuario aquí.
‫Luego, vuelva a guardar
‫esto aquí para volver a ejecutar el servidor, y ahora tenemos un
‫nombre de usuario aquí y estas son las cuatro variables de
‫entorno que están definidas en nuestro archivo.
‫Genial, y solo para terminar, sigamos adelante y usemos esta variable
‫nodeenv y también la variable de puerto.
‫Y para ello entramos en la aplicación. js y en algún lugar aquí el puerto
‫debería estar definido y en algún lugar aquí tenemos middleware de registrador oral
‫y lo que quiero hacer
‫ahora es ejecutar solo ese middleware para definirlo solo
‫cuando estamos en desarrollo, de modo que
‫el inicio de sesión no suceda cuando el la
‫aplicación está en producción.
‫Así que tenemos eso aquí mismo, así
‫que sigamos adelante
‫y digamos si el proceso. env. nodeenv es igual al
‫desarrollo, solo entonces use Morgan.
‫Ahora
‫puede que se pregunte por qué tenemos acceso a esta
‫variable de entorno aquí cuando realmente no las definimos en este archivo, sino en el servidor. js.
‫Y la respuesta a eso es que la lectura de
‫las variables del archivo que ocurre aquí en el proceso del
‫nodo solo necesita suceder una vez.
‫Entonces está en el proceso y el proceso es,
‫por supuesto, el mismo sin importar en qué archivo estemos.
‫Así que siempre estamos en
‫el mismo proceso y las variables de entorno están en el proceso.
‫Entonces, el proceso que se está ejecutando, por lo que
‫el lugar donde se ejecuta nuestra aplicación
‫es siempre el mismo y, por lo tanto, está disponible para nosotros
‫en todos los archivos del proyecto.
‫Así es como usamos esta variable, ahora regresemos al
‫servidor y digamos que el puerto debería ser el
‫que viene de
‫las variables de entorno o este 3.000.
‫Así que procesa. env. puerto o 3.000.
‫Ahora algo anda mal aquí, echemos un vistazo, y veo que
‫ya estoy usando 8,000 en algunas otras aplicaciones que
‫se están ejecutando en algún lugar
‫de mi computadora.
‫Y así que déjeme seguir adelante y cambiar
‫eso aquí a 3.000 también.
‫Pero realmente no importa, puedes dejar el tuyo en 8,000
‫si eso te funciona.
‫Bórralo aquí, dale otro guardado y ahora funciona.
‫También puedes deshacerte de esta consola. inicie sesión aquí porque no
‫necesitamos ver estas variables todo el tiempo.
‫Y ahora hagamos rápidamente una solicitud http
‫para ver si nuestro registrador todavía funciona y lo haré aquí, cartero
‫nuevamente, así que este,
‫volviendo, y ahora nuestro inicio de sesión se ha ido.
‫Bueno, veamos por qué.
‫Así que lo tenemos aquí en desarrollo, lo cual es correcto.
‫Y entonces esto debería funcionar, así que
‫esto también es correcto aquí, desarrollo.
‫Bueno, hagamos una consola. log
‫y eche un vistazo a un nivel,
‫pero aquí abajo no estamos definidos.
‫Entonces, veamos qué está sucediendo aquí, y sí, veo el problema que es
‫que en realidad requerimos el
‫archivo de la
‫aplicación antes de que nuestras variables de entorno se lean desde el archivo de configuración.
‫Por tanto, debe ser al revés.
‫Así que permítanme mover eso aquí y
‫solo después de eso queremos ejecutar el código que
‫está en el archivo up.
‫Y solo después de eso queremos ejecutar el
‫código que está en el archivo up.
‫Nuevamente, no pudimos leer la variable de proceso
‫dentro de la aplicación. js porque aún no estaba configurado.
‫Entonces, si lo guardamos ahora, entonces
‫verá desarrollo aquí.
‫Y si hacemos nuestra solicitud ahora, enviémosla, entonces,
‫por supuesto, recuperamos nuestro registrador.
‫Entonces eso está funcionando ahora.
‫Y ahora, finalmente, como última
‫prueba, agreguemos un nuevo script de inicio a nuestro paquete. json.
‫Así que en este momento hemos iniciado el servidor nodemon, pero
‫también quiero agregar otro para producción solo
‫para que podamos probar lo que sucede en esa situación.
‫Así que inicie prod, y
‫déjeme llamar al otro dev, por lo que en producción
‫simplemente queremos establecer la variable nodeenv en producción.
‫Entonces nodenv es igual
‫a producción y el resto es igual.
‫Entonces
‫nodenv, servidor. js.
‫Así que
‫terminemos este aquí npm run start
‫production.
‫Y ahora
‫ve que nuestra variable nodeenv está realmente configurada en producción.
‫Entonces eso viene de esta consola. inicie sesión aquí.
‫Y si
‫ahora hacemos esta solicitud, no obtendremos nuestro registrador.
‫Entonces no está aquí como estaba antes.
‫Y así es básicamente cómo ejecutamos diferentes
‫códigos dependiendo de si estamos en desarrollo o en producción.
‫Así que vamos a deshacernos de
‫este aquí, podemos
‫cerrar este también, así que volvamos a
‫nuestro script de desarrollo, por supuesto, entonces npm
‫ejecuta start dev y ya estamos.
‫Solo una prueba final y,
‫de hecho, aquí está nuestro resultado de inicio de sesión.
‫Eso es todo para las variables de entorno, pasemos a
‫la lección final de esta sección.