{"id":54105,"date":"2022-07-11T09:01:12","date_gmt":"2022-07-11T07:01:12","guid":{"rendered":"https:\/\/kinsta.com\/es\/?p=54105&#038;post_type=knowledgebase&#038;preview_id=54105"},"modified":"2025-10-01T21:32:09","modified_gmt":"2025-10-01T19:32:09","slug":"variables-de-entorno","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/","title":{"rendered":"Variables de Entorno: \u00bfQu\u00e9 Son y C\u00f3mo Usarlas?"},"content":{"rendered":"<p>Si has trabajado en cualquier forma de <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-un-desarrollador-full-stack\/\">desarrollo de aplicaciones<\/a>, seguro que ya has o\u00eddo hablar del t\u00e9rmino \u00abvariables de entorno\u00bb Las variables de entorno se utilizan para almacenar los secretos de la aplicaci\u00f3n y los datos de configuraci\u00f3n, que son recuperados por tu aplicaci\u00f3n en ejecuci\u00f3n cuando se necesitan.<\/p>\n<p>Las variables de entorno a\u00f1aden dinamismo a tu base de c\u00f3digo est\u00e1tico; puedes cambiar entre recursos internos\/externos en funci\u00f3n del valor de la variable de entorno que se pasa a tu aplicaci\u00f3n.<\/p>\n<p>Este art\u00edculo desglosar\u00e1 las variables de entorno para ti. Aprender\u00e1s algunas formas populares de crear y gestionar las variables de entorno y entender\u00e1s cu\u00e1ndo utilizarlas. Al final de este art\u00edculo, ser\u00e1s capaz de utilizar con eficacia y confianza las variables de entorno en tus aplicaciones.<\/p>\n<p>Sin m\u00e1s pre\u00e1mbulos, \u00a1comencemos!<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>\u00bfQu\u00e9 Es Una Variable de Entorno?<\/h2>\n<p>Reiterando la explicaci\u00f3n anterior, las variables de entorno son variables disponibles para tu programa\/aplicaci\u00f3n de forma din\u00e1mica durante el tiempo de ejecuci\u00f3n. El valor de estas variables puede proceder de diversas fuentes: archivos de texto, gestores secretos de terceros, scripts de llamada, etc.<\/p>\n<p>Lo importante aqu\u00ed es el hecho de que el valor de estas variables de entorno no est\u00e1 codificado en tu programa. Son realmente din\u00e1micas y pueden cambiarse en funci\u00f3n del entorno en el que se ejecuta tu programa.<\/p>\n\n<h2>Tipos de Variables de Entorno<\/h2>\n<p>Hay tres tipos destacados de variables de entorno en un sistema inform\u00e1tico basado en Windows, y cada uno de ellos tiene sus casos de uso. Vamos a discutirlas una por una.<\/p>\n<h3>1. Variables de entorno del sistema<\/h3>\n<p>Las variables de entorno del sistema residen en la ra\u00edz superior del sistema y son las mismas para todos los procesos que se ejecutan en un sistema bajo todos los perfiles de usuario del mismo. El administrador de tu sistema operativo\/sistema suele establecerlas, y rara vez es necesario que juegues con ellas.<\/p>\n<p>Uno de los usos m\u00e1s habituales de una variable de entorno del sistema es establecer una variable <code>PATH<\/code> para un paquete\/biblioteca global que utilizar\u00e1n todos los usuarios del sistema.<\/p>\n<h3>2. Variables de entorno de usuario<\/h3>\n<p>Las variables de entorno de usuario son aquellas que son locales a un perfil de usuario en los sistemas Windows. Estas variables se utilizan para almacenar informaci\u00f3n espec\u00edfica del usuario, como la ruta de acceso a una instalaci\u00f3n local de bibliotecas que no deben ser utilizadas por todos los usuarios, valores espec\u00edficos de programas instalados s\u00f3lo para usuarios concretos, etc.<\/p>\n<p>No necesitas que el administrador del sistema haga cambios en estas variables; puedes hacerlo t\u00fa mismo como usuario. Estas variables son \u00fatiles a la hora de implementar cambios locales en tu sistema sin afectar a otros usuarios.<\/p>\n<h3>3. Variables de entorno en tiempo de ejecuci\u00f3n\/proceso<\/h3>\n<p>Las variables de entorno en tiempo de ejecuci\u00f3n se limitan \u00fanicamente al tiempo de ejecuci\u00f3n o al proceso al que est\u00e1n asociadas. Suelen ser establecidas por el proceso padre que crea el nuevo proceso y van acompa\u00f1adas de las variables de entorno del sistema y del usuario.<\/p>\n<p>Puedes utilizar scripts de terminal para crear y almacenar estas variables sobre la marcha. Las variables de tiempo de ejecuci\u00f3n no suelen ser permanentes, a menos que se hagan scripts, y tienes que definirlas cada vez que inicies un nuevo proceso.<\/p>\n<h3>Variables de entorno en sistemas basados en Unix<\/h3>\n<p>A diferencia de los sistemas Windows, los sistemas basados en Unix no tienen tres capas de tipos de variables de entorno. En estos sistemas, todo se almacena bajo un objeto <code>var<\/code> y puede ser accedido\/modificado por el programa en ejecuci\u00f3n.<\/p>\n<p>Si necesitas establecer algunas variables de entorno como predeterminadas para que se carguen cada vez que se ejecute cualquier programa en tu sistema, tienes que definirlas en archivos como <code>.~\/bashrc<\/code> o <code>~.profile<\/code> que se cargan al arrancar el sistema.<\/p>\n<h3>Variables de entorno frente a pseudovariables de entorno<\/h3>\n<p>En los sistemas basados en Windows y DOS existe una l\u00ednea separada de variables de entorno din\u00e1micas, conocidas como pseudovariables de entorno. No se trata de pares de claves y valores asignados de forma est\u00e1tica, sino de referencias din\u00e1micas que devuelven varios valores cuando se consultan.<\/p>\n<p>Mientras que puedes asignar un valor a una variable de entorno manualmente utilizando el comando <code>SET<\/code> o su equivalente, no puedes asignar valores a las pseudovariables de entorno. Existe una <a href=\"https:\/\/en.wikipedia.org\/wiki\/Environment_variable#Windows_2\">lista fija<\/a> de tales variables, y puedes utilizarlas en tu c\u00f3digo para facilitar tu trabajo. Algunos casos de uso populares son <code>%CD%<\/code> para el directorio actual y <code>%TIME%<\/code> para la hora actual.<\/p>\n<h2>\u00bfPor qu\u00e9 Debes Utilizar las Variables de Entorno?<\/h2>\n<p>Ahora que entiendes lo que es una variable de entorno y sus distintos tipos, es el momento de saber por qu\u00e9 deber\u00edas utilizarlas ampliamente en tus aplicaciones.<\/p>\n<h3>Separaci\u00f3n de intereses<\/h3>\n<p>Una de las razones m\u00e1s importantes por las que deber\u00edas utilizar variables de entorno en tus aplicaciones es la adhesi\u00f3n a un principio de dise\u00f1o popular y \u00fatil: la separaci\u00f3n de intereses. Este principio de dise\u00f1o establece que los programas inform\u00e1ticos deben dividirse en secciones distintas para gestionarlos de forma eficiente. Cada secci\u00f3n debe basarse en una de las preocupaciones principales del programa, y debe haber un acoplamiento m\u00ednimo entre dichas secciones.<\/p>\n<p>Puedes considerar la configuraci\u00f3n de la aplicaci\u00f3n como una de esas preocupaciones, por lo que debe estar separada del programa principal. Una de las mejores formas de hacerlo es almacenarla en un archivo externo e inyectarla cuando sea necesario. Las variables de entorno te ayudan a aislar los datos cr\u00edticos de configuraci\u00f3n de la aplicaci\u00f3n mediante archivos env o almacenes de variables remotas. De este modo, tus desarrolladores s\u00f3lo reciben la informaci\u00f3n que necesitan.<\/p>\n<h3>Mantener conjuntos de configuraci\u00f3n independientes entre entornos<\/h3>\n<p>Adem\u00e1s de aislar las configuraciones de la aplicaci\u00f3n de tu c\u00f3digo fuente, tambi\u00e9n necesitas poder cambiar f\u00e1cilmente entre conjuntos de datos de configuraci\u00f3n. Si eliges codificar los valores de configuraci\u00f3n de tu aplicaci\u00f3n en tu c\u00f3digo fuente, puede resultar casi imposible reemplazar esos valores en funci\u00f3n de condiciones externas, como los entornos de despliegue.<\/p>\n<p>El uso de variables de entorno te ayuda a desacoplar los datos de configuraci\u00f3n de tu c\u00f3digo y a estandarizar la forma en que se proporciona esta informaci\u00f3n a tu aplicaci\u00f3n, lo que te permite modificar\/cambiar la informaci\u00f3n que se proporciona sobre la marcha.<\/p>\n<h3>Asegurar los secretos<\/h3>\n<p>Los secretos de tu aplicaci\u00f3n son informaci\u00f3n sensible. Si las personas equivocadas ponen sus manos en ellos, pueden acceder a la arquitectura interna de tu aplicaci\u00f3n y a los recursos de terceros. Algunos ejemplos comunes son las claves de AWS y los detalles de las cuentas del sistema. El acceso no autorizado a estas claves puede conducir a la p\u00e9rdida de dinero y datos de la aplicaci\u00f3n. Los hackers pueden incluso llegar a impedir que tu aplicaci\u00f3n funcione con normalidad.<\/p>\n<p>Por tanto, es vital que protejas estos secretos. Dejarlos por ah\u00ed en tu c\u00f3digo base puede hacer que todos tus desarrolladores tengan acceso a ellos. Si no sigues los m\u00e9todos de ofuscaci\u00f3n de c\u00f3digo adecuados, tus aplicaciones pueden ser objeto de ingenier\u00eda inversa para recuperar las claves que se encuentran en tu c\u00f3digo. Aislar estos secretos mediante variables de entorno puede evitar que se produzcan estos escenarios.<\/p>\n<h2>Ejemplos de Uso de las Variables de Entorno<\/h2>\n<p>Ahora que tienes una idea clara de c\u00f3mo funcionan las variables de entorno y de c\u00f3mo debes utilizarlas eficazmente, aqu\u00ed tienes algunos escenarios comunes en los que puedes utilizar las variables de entorno:<\/p>\n<ul>\n<li><strong>Tipo de<\/strong> <strong>entorno:<\/strong> Las variables de entorno suelen utilizarse para almacenar el nombre del entorno en el que se est\u00e1 ejecutando la app. La l\u00f3gica de la aplicaci\u00f3n puede utilizar este valor para acceder al conjunto adecuado de recursos o para activar\/desactivar determinadas funciones o secciones de la aplicaci\u00f3n.<\/li>\n<li><strong>Nombre de dominio<\/strong>: El nombre de dominio de una aplicaci\u00f3n puede variar en funci\u00f3n de su entorno. Aislarlo tambi\u00e9n te ayuda a realizar f\u00e1cilmente cambios en el nombre de dominio de tu aplicaci\u00f3n sin tener que buscar sus apariciones en todo el c\u00f3digo base.<\/li>\n<li><strong>URLs de la API<\/strong>: Cada entorno de tu aplicaci\u00f3n puede tener APIs desplegadas en diferentes entornos tambi\u00e9n.<\/li>\n<li><strong>Claves privadas<\/strong>: Las claves de los servicios y recursos de pago deben estar aisladas del c\u00f3digo fuente de la app para que no caigan accidentalmente en manos equivocadas.<\/li>\n<li><strong>N\u00fameros de cuenta de servicio, etc.<\/strong>: Puedes variar otra informaci\u00f3n espec\u00edfica del sistema, como los n\u00fameros de cuenta de servicio, los llaveros, etc., en funci\u00f3n del entorno de la app para la gesti\u00f3n y supervisi\u00f3n de los recursos.<\/li>\n<\/ul>\n<h2>\u00bfC\u00f3mo Almacenar las Variables de Entorno?<\/h2>\n<p>Ahora que entiendes por qu\u00e9 son importantes las variables de entorno, es el momento de ver c\u00f3mo puedes almacenarlas y acceder a ellas en tu aplicaci\u00f3n. A continuaci\u00f3n se comentan tres formas diferentes, aunque populares, de gestionar las variables de entorno en una aplicaci\u00f3n.<\/p>\n<h3>Utilizar archivos .env<\/h3>\n<p><code>.env<\/code> son sin duda la forma m\u00e1s f\u00e1cil y popular de gestionar las variables de entorno. La idea es sencilla: almacenas tus variables de entorno en un archivo llamado <code>.env<\/code> en la ra\u00edz de tu proyecto. La aplicaci\u00f3n busca las variables en este archivo y las carga para utilizarlas durante el tiempo de ejecuci\u00f3n. Este es el aspecto de un archivo t\u00edpico de <code>.env<\/code>:<\/p>\n<pre><code class=\"language-bash\">VAR_UNO=SOME_KEY_HERE\nVAR_DOS=SOME_OTHER_KEY_HERE\n<\/code><\/pre>\n<p><code>.env<\/code> los archivos tambi\u00e9n te permiten definir conjuntos de variables de entorno y acceder a ellas en funci\u00f3n del entorno de ejecuci\u00f3n de tu aplicaci\u00f3n o de otros factores. En lugar de guardar el archivo simplemente como <code>.env<\/code>, puedes hacer m\u00e1s de un archivo y guardarlos como <code>.env.dev<\/code> y <code>.env.prod<\/code>. Dentro de estos archivos, puedes definir los mismos conjuntos de variables pero con valores diferentes, seg\u00fan el entorno.<\/p>\n<h4>Plantilla de ejemplo<\/h4>\n<p>Cuando trabajes con archivos <code>.env<\/code>, no es recomendable a\u00f1adirlos a tu sistema de control de versiones (m\u00e1s adelante se hablar\u00e1 de ello). Por lo tanto, debes definir un \u00ab.env.template\u00bb en tu proyecto para que los desarrolladores puedan seguir la plantilla y crear ellos mismos un archivo <code>.env<\/code> localmente.<\/p>\n<p>Este es el aspecto que tendr\u00eda un archivo <code>.env.template<\/code>:<\/p>\n<pre><code class=\"language-bash\">VAR_UNO= # Your value here\nVAR_DOS= # Your value here\n<\/code><\/pre>\n<p>No tiene que seguir ninguna convenci\u00f3n, siempre que sea autoexplicativo para tu equipo de desarrollo. Para simplificar este proceso, tambi\u00e9n podr\u00edas utilizar paquetes como <a href=\"https:\/\/www.npmjs.com\/package\/env-template\" target=\"_blank\" rel=\"noopener noreferrer\">env-template<\/a>.<\/p>\n<h4>Pros<\/h4>\n<p>Estas son algunas de las razones por las que deber\u00edas considerar el uso de archivos <code>.env<\/code> para gestionar las variables de entorno en tu aplicaci\u00f3n.<\/p>\n<h5>F\u00e1cil de usar<\/h5>\n<p>Este m\u00e9todo es el m\u00e1s sencillo en la l\u00ednea de t\u00e9cnicas de gesti\u00f3n de variables de entorno. Todo lo que necesitas hacer es crear un archivo de texto plano que contenga tus secretos y almacenarlo en la ra\u00edz de tu proyecto.<\/p>\n<p>Cambiar de entorno es tan sencillo como cambiar el propio archivo env. Puedes almacenar varios archivos con los nombres <code>.env.dev<\/code>, <code>.env.prod<\/code>, <code>.env.uat<\/code>, etc., y configurar tu c\u00f3digo fuente para que acceda a estos archivos en funci\u00f3n del entorno en el que se est\u00e9 ejecutando.<\/p>\n<h5>Acceso local<\/h5>\n<p>Puedes configurar f\u00e1cilmente los archivos <code>.env<\/code> en un entorno de desarrollo local. A diferencia de los gestores de variables nativos de la plataforma, no necesitas desplegar tu aplicaci\u00f3n para aprovechar la funcionalidad de las variables de entorno. En comparaci\u00f3n con los gestores de secretos, los archivos <code>.env<\/code> son m\u00e1s f\u00e1ciles de configurar localmente, y no hay dependencia de la red para acceder a los secretos de tu aplicaci\u00f3n.<\/p>\n<h5>Soporte de c\u00f3digo abierto<\/h5>\n<p>Existen numerosos paquetes de c\u00f3digo abierto que te ayudan a cargar y gestionar los secretos de las aplicaciones desde los archivos <code>env<\/code>. No necesitas depender de servicios de pago, ni tus opciones son limitadas en lo que respecta a la gesti\u00f3n de secretos de aplicaci\u00f3n. Hay una amplia gama de bibliotecas de c\u00f3digo abierto de terceros para ayudarte a gestionar tus archivos env. Algunos ejemplos populares\/\u00fatiles son <a href=\"https:\/\/www.npmjs.com\/package\/dotenv\" target=\"_blank\" rel=\"noopener noreferrer\">dotenv<\/a>, <a href=\"https:\/\/www.npmjs.com\/package\/env-template\" target=\"_blank\" rel=\"noopener noreferrer\">env-template<\/a> y <a href=\"https:\/\/www.npmjs.com\/package\/cross-env\" target=\"_blank\" rel=\"noopener noreferrer\">cross-env<\/a>.<\/p>\n<h4>Contras<\/h4>\n<p>He aqu\u00ed algunas desventajas de los archivos env que debes conocer antes de utilizarlos en tus proyectos.<\/p>\n<h5>Formato<\/h5>\n<p><code>.env<\/code> los archivos env almacenan los secretos de tu aplicaci\u00f3n en forma de pares clave-valor. El formato habitual para almacenar las variables de entorno en un archivo <code>.env<\/code> es:<\/p>\n<pre><code class=\"language-bash\">Key1=Value1\n<\/code><\/pre>\n<p>Tienes que ce\u00f1irte estrictamente a este formato para que tu aplicaci\u00f3n pueda leer tus secretos de aplicaci\u00f3n con \u00e9xito. Si cometes un peque\u00f1o error en alg\u00fan lugar entre decenas o cientos de l\u00edneas de variables de entorno, es posible que no se analice todo el archivo, y tu programa arrojar\u00e1 errores inconexos en todo momento. El hecho de que haya un error de an\u00e1lisis en tu archivo <code>.env<\/code> puede que ni siquiera se destaque. Por eso debes tener cuidado al utilizar los archivos <code>.env<\/code>.<\/p>\n<h5>Propenso a la fuga accidental de secretos al compartir\/almacenar<\/h5>\n<p>Como los archivos <code>.env<\/code> son archivos de texto plano, son vulnerables a la exposici\u00f3n accidental cuando se almacenan en un disco duro compartido o se env\u00edan a trav\u00e9s de una red no segura. Por lo tanto, debes tener especial cuidado para que no se filtren los secretos de tu aplicaci\u00f3n cuando los hayas almacenado utilizando archivos <code>.env<\/code>.<\/p>\n<h3>Utilizar el almacenamiento de variables nativo de la plataforma<\/h3>\n<p>Otra opci\u00f3n popular para almacenar variables de entorno es confiar en el almacenamiento de variables de tu plataforma de despliegue. La mayor\u00eda de los entornos de despliegue, como Heroku, <a href=\"https:\/\/kinsta.com\/es\/alternativa-aws\/\">AWS<\/a>, Netlify, etc., ofrecen un espacio para que los usuarios suban secretos que luego se inyectan en el tiempo de ejecuci\u00f3n de tu aplicaci\u00f3n. Puedes consultar la documentaci\u00f3n de tu plataforma de despliegue para saber si lo soporta y c\u00f3mo empezar a utilizarlo.<\/p>\n<p>Aqu\u00ed tienes un r\u00e1pido vistazo al gestor de variables de entorno de Netlify:<\/p>\n<figure id=\"attachment_125214\" aria-describedby=\"caption-attachment-125214\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125214 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/netlify-environment-variable-manager-1024x627.png\" alt=\"Screenshot of Netlify's environment variables manager showing an editable list of keys and values\" width=\"1024\" height=\"627\"><figcaption id=\"caption-attachment-125214\" class=\"wp-caption-text\">Gestor de variables de entorno de Netlify.<\/figcaption><\/figure>\n<h4>Pros<\/h4>\n<p>He aqu\u00ed por qu\u00e9 deber\u00edas considerar el uso de soluciones de almacenamiento de variables nativas de la plataforma.<\/p>\n<h5>Muy seguro<\/h5>\n<p>Dado que esta opci\u00f3n es gestionada \u00edntegramente por tu plataforma de despliegue, es m\u00e1s segura que almacenar tus secretos en un <a href=\"https:\/\/kinsta.com\/es\/blog\/mejores-editores-texto\/\">archivo de texto plano<\/a>. Puedes controlar qui\u00e9n tiene acceso al gestor de variables, y puedes estar seguro de que los secretos nunca se enviar\u00e1n accidentalmente a tu VCS.<\/p>\n<h5>F\u00e1cil de actualizar<\/h5>\n<p>Actualizar las variables de entorno cuando se almacenan de forma independiente es m\u00e1s sencillo: no necesitas editar tu c\u00f3digo fuente y hacer una nueva publicaci\u00f3n para \u00e9l. Simplemente puedes cambiar los valores en la plataforma y reconstruir tu proyecto. \u00c9ste recibir\u00e1 los nuevos valores la pr\u00f3xima vez que se inicie.<\/p>\n<p>Tambi\u00e9n desaparecen los problemas de formato, ya que la mayor\u00eda de los gestores de despliegue espec\u00edficos de la plataforma desgranan las claves a medida que las introduces. En casos como el de Netlify, consigues introducir los secretos de forma preformateada, eliminando las posibilidades de cometer un error de formato.<\/p>\n<h5>Permite la colaboraci\u00f3n<\/h5>\n<p>Dado que todo tu equipo puede acceder a las plataformas de despliegue, puedes compartir f\u00e1cilmente los secretos con las personas adecuadas sin tener que enviar archivos de texto por Internet. Puedes controlar qui\u00e9n tiene acceso al gestor de variables (en la mayor\u00eda de los casos) y utilizarlo como repositorio central para los secretos de tu aplicaci\u00f3n.<\/p>\n<h4>Contras<\/h4>\n<p>Aunque los gestores de variables nativos de la plataforma parecen ser la soluci\u00f3n que necesitas, hay algunas cuestiones que debes tener en cuenta antes de optar por ellos.<\/p>\n<h5>Dependientes de la plataforma<\/h5>\n<p>Como su nombre indica, son muy espec\u00edficos de la plataforma que est\u00e9s utilizando. En algunos casos, es posible que tu plataforma de despliegue no ofrezca este servicio. Cambiar tu plataforma de despliegue para tener acceso a dicho servicio podr\u00eda no ser la mejor decisi\u00f3n.<\/p>\n<h5>No son uniformes<\/h5>\n<p>Al ser ofrecidos y gestionados completamente por la plataforma de despliegue, estos servicios pueden ser muy poco uniformes. Trasladar las variables de una plataforma a otra puede ser problem\u00e1tico. Ni siquiera puedes suponer que todas las plataformas de despliegue ofrezcan la posibilidad de importar\/exportar variables de entorno. Aunque la mayor\u00eda lo hace, est\u00e1 totalmente en manos de la plataforma. Hay muchas posibilidades de que te encuentres con un bloqueo de proveedor a peque\u00f1a escala si tienes una larga lista de variables de entorno.<\/p>\n<h5>No hay soporte local<\/h5>\n<p>Aunque estos servicios son estupendos para acceder a las variables de entorno en los despliegues de tu aplicaci\u00f3n, rara vez existe la posibilidad de que puedas utilizarlos mientras desarrollas tu aplicaci\u00f3n localmente. En la mayor\u00eda de los casos, tendr\u00e1s que recurrir a la gesti\u00f3n de archivos locales <code>.env<\/code>. Aunque cumple el objetivo, complica innecesariamente toda la configuraci\u00f3n.<\/p>\n<h3>Utilizar gestores secretos<\/h3>\n<p>La tercera opci\u00f3n, que actualmente es bastante joven en sus fases de desarrollo, es utilizar gestores secretos dedicados. Los gestores de secretos son servicios de terceros que te permiten aislar completamente los secretos de tu aplicaci\u00f3n de tu c\u00f3digo fuente\/implementaci\u00f3n y obtenerlos cuando sea necesario a trav\u00e9s de conexiones de red seguras.<\/p>\n<h4>Ventajas<\/h4>\n<p>Estas son algunas de las ventajas que ofrecen los gestores de secretos sobre otros m\u00e9todos de gesti\u00f3n de secretos.<\/p>\n<h5>Alta seguridad<\/h5>\n<p>Como tus secretos se almacenan en un servicio completamente aislado, puedes estar seguro de que lo m\u00e1s probable es que nunca se filtren accidentalmente al compartirlos con tus colegas o a trav\u00e9s de los commits del control de versiones. La plataforma de terceros se encarga de mantener tus secretos a salvo, y suelen tener acuerdos de nivel de servicio bastante estrictos en lo que respecta a la seguridad de los datos.<\/p>\n<p>Incluso cuando se accede a los secretos desde dentro de tu aplicaci\u00f3n, la mayor\u00eda de los gestores de secretos proporcionan su propio c\u00f3digo cliente que puede obtener y permitir el acceso a los secretos de <a href=\"https:\/\/kinsta.com\/es\/blog\/seguridad-nube\/\">forma segura<\/a> siempre que sea necesario.<\/p>\n<h5>Uniforme en todos los entornos<\/h5>\n<p>Como los secretos son ahora independientes de tu c\u00f3digo base y de los entornos de despliegue, ahora puedes disfrutar de uniformidad en todos los entornos. No necesitas hacer arreglos especiales para la incorporaci\u00f3n de nuevos desarrolladores o tomar medidas especiales antes de pasar tu aplicaci\u00f3n a producci\u00f3n: la mayor\u00eda de estos aspectos se simplifican o son atendidos por tu gestor de secretos.<\/p>\n<h4>Contras<\/h4>\n<p>Aunque los gestores de secretos parecen ser la mejor soluci\u00f3n posible para gestionar las variables de entorno, tienen su propia cuota de inconvenientes.<\/p>\n<h5>Coste<\/h5>\n<p>La gesti\u00f3n de las variables de entorno ha sido una actividad interna de los proyectos durante mucho tiempo. Incluso la mayor\u00eda de las plataformas de despliegue proporcionan esta funci\u00f3n de forma gratuita, ya que no incurren en ning\u00fan coste adicional por ello.<\/p>\n<p>Sin embargo, como los gestores secretos son servicios completamente independientes, tienen su propio coste de funcionamiento. Por tanto, los usuarios tienen que asumir este coste al utilizar estos servicios.<\/p>\n<h5>Etapas iniciales de la tecnolog\u00eda<\/h5>\n<p>Dado que la tecnolog\u00eda es bastante nueva, nunca se puede estar seguro de c\u00f3mo va a ser adoptada por la industria en los pr\u00f3ximos d\u00edas. Aunque los gestores secretos son muy prometedores en t\u00e9rminos de seguridad y facilidad de gesti\u00f3n, el factor coste y las preocupaciones sobre el manejo de datos podr\u00edan dar lugar a una adopci\u00f3n bastante lenta de la tecnolog\u00eda.<\/p>\n<h2>\u00bfC\u00f3mo Trabajar con las Variables de Entorno?<\/h2>\n<p>Ahora que entiendes el concepto de variables de entorno y las formas disponibles de implementarlas en una aplicaci\u00f3n, veamos c\u00f3mo puedes trabajar con ellas a trav\u00e9s del terminal y en <a href=\"https:\/\/kinsta.com\/es\/blog\/node-js-aplicaciones\/\">aplicaciones basadas en Node.js<\/a>.<\/p>\n<h3>Variables de entorno en el terminal<\/h3>\n<p>Como las variables de entorno son espec\u00edficas de los procesos, puedes establecerlas y eliminarlas a trav\u00e9s del terminal para que se transmitan a los procesos que tu terminal genera.<\/p>\n<h4>\u00bfC\u00f3mo encontrar los valores de las variables?<\/h4>\n<p>Para ver la lista de variables de entorno en tu terminal, puedes ejecutar los siguientes comandos espec\u00edficos de tu sistema operativo.<\/p>\n<p>En Windows:<\/p>\n<pre><code class=\"language-bash\">set\n<\/code><\/pre>\n<p>En Linux o MacOS:<\/p>\n<pre><code class=\"language-bash\">env\n<\/code><\/pre>\n<p>Esto imprimir\u00e1 una lista de todas las variables de entorno disponibles en tu terminal en funcionamiento.<\/p>\n<h4>Establecer nuevas variables<\/h4>\n<p>Para establecer nuevas variables a trav\u00e9s del terminal, puedes ejecutar los siguientes comandos.<\/p>\n<p>En Windows:<\/p>\n<pre><code class=\"language-bash\">set \"VAR_NAME=var_value\"\n<\/code><\/pre>\n<p>En Linux o MacOS:<\/p>\n<pre><code class=\"language-bash\">VAR_NAME=var_value\n<\/code><\/pre>\n<h4>Borrar variables<\/h4>\n<p>Para eliminar una variable de entorno, debes ejecutar los siguientes comandos.<\/p>\n<p>En Windows:<\/p>\n<pre><code class=\"language-bash\">set \"VAR_NAME=\"\n<\/code><\/pre>\n<p>En Linux o MacOS:<\/p>\n<pre><code class=\"language-bash\">unset VAR_NAME\n<\/code><\/pre>\n<p>Ten en cuenta que los m\u00e9todos comentados anteriormente s\u00f3lo sirven para crear\/borrar variables de entorno para la sesi\u00f3n actual del terminal.<\/p>\n<h3>Variables de entorno en Node.js<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-javascript\/\">JavaScript<\/a> es uno de los lenguajes de programaci\u00f3n m\u00e1s populares actualmente. Se utiliza ampliamente en la construcci\u00f3n de <a href=\"https:\/\/kinsta.com\/es\/blog\/desarrollador-de-frontend\/\">aplicaciones tanto backend como front-end<\/a>, lo que lo convierte en uno de los lenguajes de programaci\u00f3n m\u00e1s vers\u00e1tiles.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-node-js\/\">Node.js<\/a> es uno de los <a href=\"https:\/\/kinsta.com\/es\/blog\/bibliotecas-javascript\/\">frameworks JS<\/a> m\u00e1s utilizados para construir aplicaciones backend. Veamos c\u00f3mo puedes manejar f\u00e1cilmente las variables de entorno en las aplicaciones basadas en Node.js.<\/p>\n<h4>Acceder a las variables de entorno directamente<\/h4>\n<p>Node.js te proporciona una referencia a las variables de entorno de tu proceso actual a trav\u00e9s de <code>process.env<\/code>. Puedes ver las variables de entorno disponibles imprimiendo este objeto en la consola.<\/p>\n<figure id=\"attachment_125215\" aria-describedby=\"caption-attachment-125215\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125215 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/printing-process-env-1024x579.png\" alt=\"Node.js app's output on the terminal showing a list of available environment variables.\" width=\"1024\" height=\"579\"><figcaption id=\"caption-attachment-125215\" class=\"wp-caption-text\">Imprimiendo el objeto process.env.<\/figcaption><\/figure>\n<p>Este objeto contendr\u00e1 variables disponibles para el proceso Node en ejecuci\u00f3n. Puedes a\u00f1adirle nuevas variables declar\u00e1ndolas antes de ejecutar tu aplicaci\u00f3n, de forma similar a esto:<\/p>\n<pre><code class=\"language-bash\">VAR_UNO=SOMETHING node index.js\n<\/code><\/pre>\n<figure id=\"attachment_125216\" aria-describedby=\"caption-attachment-125216\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125216 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/printing-process-env-new-variable-1024x614.png\" alt=\"Node.js app's output on the terminal showing a list of available environment variables along with the new variable added on the top.\" width=\"1024\" height=\"614\"><figcaption id=\"caption-attachment-125216\" class=\"wp-caption-text\">Imprimiendo el objeto process.env despu\u00e9s de a\u00f1adir una nueva variable.<\/figcaption><\/figure>\n<p>Como puedes ver, la nueva variable se a\u00f1ade a tu objeto <code>process.env<\/code>. Sin embargo, no puedes acceder a ninguna variable definida en un archivo <code>.env<\/code> mediante este m\u00e9todo. Para ello, debes utilizar un paquete como <code>dotenv<\/code> para cargar el archivo <code>.env<\/code> en tiempo de ejecuci\u00f3n.<\/p>\n<h4>Uso del paquete dotenv para acceder a los archivos .env<\/h4>\n<p>El paquete <code>dotenv<\/code> te ayuda a cargar las variables de entorno almacenadas en los archivos <code>.env<\/code> en la ra\u00edz de tu proyecto. Su uso es sencillo, tienes que instalarlo ejecutando el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">npm i dotenv@16.0.0\n<\/code><\/pre>\n<p>A continuaci\u00f3n, tienes que a\u00f1adir la siguiente l\u00ednea de c\u00f3digo al principio del c\u00f3digo de tu aplicaci\u00f3n para inicializar el paquete:<\/p>\n<pre><code class=\"language-js\">require('dotenv').config()\n<\/code><\/pre>\n<p>\u00a1Ya est\u00e1! Ahora los secretos que almacenes en un archivo <code>.env<\/code> en la ra\u00edz de tu proyecto se cargar\u00e1n en tu objeto <code>process.env<\/code> en cuanto se inicie la aplicaci\u00f3n. Veremos este m\u00e9todo en acci\u00f3n m\u00e1s adelante en el siguiente tutorial.<\/p>\n<h2>Tutorial de Variable de Entorno<\/h2>\n<p>La mejor manera de entender un concepto t\u00e9cnico es verlo en acci\u00f3n. Aqu\u00ed tienes un r\u00e1pido tutorial para ayudarte a empezar con las variables de entorno y aprender su uso en detalle.<\/p>\n<p>En la siguiente gu\u00eda, demostraremos c\u00f3mo utilizar las variables de entorno a trav\u00e9s de las tres formas que hemos mencionado anteriormente: archivos<code>.env<\/code>, gestores de variables nativos de la plataforma y gestores secretos. Todas estas formas requerir\u00e1n un paso com\u00fan, que es configurar un proyecto b\u00e1sico de Node.js.<\/p>\n<h3>Primero: Crea un proyecto Node.js<\/h3>\n<p>Para empezar, aseg\u00farate de que <a href=\"https:\/\/kinsta.com\/es\/blog\/como-instalar-node-js\/\">tienes Node.js instalado<\/a> en tu sistema. Una vez que lo tengas configurado en tu sistema, tendr\u00e1s acceso a npm (abreviatura de Node Package Manager). npm te ayuda a instalar paquetes de Node desde el registro global de npm a trav\u00e9s de la l\u00ednea de comandos. Ser\u00e1 muy \u00fatil para instalar paquetes relacionados con nuestro proyecto de prueba.<\/p>\n<p>A continuaci\u00f3n, abre un terminal y crea un nuevo directorio. Inicializa un proyecto Node nuevo en \u00e9l:<\/p>\n<pre><code class=\"language-bash\">mkdir my-app\ncd my-app\nnpm init\n<\/code><\/pre>\n<p>Mant\u00e9n pulsado enter a trav\u00e9s de las preguntas entrantes para aceptar las opciones por defecto. Una vez hecho esto, tu terminal tendr\u00e1 un aspecto similar al siguiente<\/p>\n<figure id=\"attachment_125217\" aria-describedby=\"caption-attachment-125217\" style=\"width: 1011px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125217 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/creating-new-project-1011x1024.png\" alt=\"Terminal output showing the steps leading to the initialization of a fresh node app.\" width=\"1011\" height=\"1024\"><figcaption id=\"caption-attachment-125217\" class=\"wp-caption-text\">Creando un nuevo proyecto.<\/figcaption><\/figure>\n<p>Ahora puedes abrir este proyecto con un IDE como Visual Studio Code o IntelliJ IDEA.<\/p>\n<p>Crea un nuevo archivo en la ra\u00edz de la carpeta de tu proyecto y gu\u00e1rdalo con el nombre <code>index.js<\/code>. Este ser\u00e1 el punto de partida de tu aplicaci\u00f3n. A continuaci\u00f3n, instala Express para crear y probar r\u00e1pidamente servidores REST:<\/p>\n<pre><code class=\"language-bash\">npm i express\n<\/code><\/pre>\n<p>Una vez que tengas instalado Express, pega el siguiente fragmento de c\u00f3digo en tu archivo <code>index.js<\/code>:<\/p>\n<pre><code class=\"language-js\">const express = require(\"express\")\n\nconst app = express()\n\napp.get(\"\/\", (req, res) =&gt; {\n   res.send(\"Hello world!\")\n})\n\napp.listen(8080);\n<\/code><\/pre>\n<p>Este es un fragmento de inicio para un punto final b\u00e1sico de \u00abHola Mundo\u00bb utilizando Node.js y Express. Ejecuta lo siguiente en tu l\u00ednea de comandos:<\/p>\n<pre><code class=\"language-bash\">node index.js\n<\/code><\/pre>\n<p>Esto iniciar\u00e1 tu aplicaci\u00f3n node + express. Si navegas a http:\/\/localhost:8080 en tu navegador web, recibir\u00e1s una salida similar:<\/p>\n<figure id=\"attachment_125218\" aria-describedby=\"caption-attachment-125218\" style=\"width: 902px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125218 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/hello-world.png\" alt=\"The text \"Hello world!\" printed on a blank HTML page.\" width=\"902\" height=\"448\"><figcaption id=\"caption-attachment-125218\" class=\"wp-caption-text\">\u00a1Hola Mundo!.<\/figcaption><\/figure>\n<p>Esto indica que has configurado tu aplicaci\u00f3n correctamente. El siguiente paso es actualizar tu app para que utilice variables de entorno. Actualiza el c\u00f3digo en <code>index.js<\/code> para que coincida con el siguiente fragmento:<\/p>\n<pre><code class=\"language-js\">const express = require(\"express\")\n\nconst app = express()\n\napp.get(\"\/\", (req, res) =&gt; {\n  \n   \/\/ the responseMessage object extracts its values from environment variables\n   \/\/ If a value is not found, it instead stores the string \"not found\"\n   const responseMessage = {\n       environment: process.env.environment || \"Not found\",\n       apiBaseUrl: process.env.apiBaseUrl || \"Not found\"\n   }\n\n   res.send(responseMessage)\n})\n\napp.listen(8080);\n<\/code><\/pre>\n<p>En lugar de enviar un mensaje \u00ab\u00a1Hola mundo!\u00bb en la respuesta, ahora enviaremos un objeto JSON que contiene dos informaciones:<\/p>\n<ul>\n<li><code>environment<\/code>: Indica el entorno actual en el que est\u00e1 desplegada la app<\/li>\n<li><code>apiBaseUrl<\/code>: Lleva la URL base de una hipot\u00e9tica API. Cambiaremos el valor de esta URL en funci\u00f3n del entorno en el que se despliegue la app.<\/li>\n<\/ul>\n<p>En caso de no poder acceder a las variables de entorno, el objeto contendr\u00e1 \u00abNo encontrado\u00bb como los valores de las dos claves descritas anteriormente. Antes de seguir adelante, vuelve a ejecutar el comando <code>node index.js<\/code> y recibir\u00e1s la siguiente salida:<\/p>\n<figure id=\"attachment_125220\" aria-describedby=\"caption-attachment-125220\" style=\"width: 902px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125220 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/env-apibaseurl-not-found-1.png\" alt=\"A JSON object with two keys environment and apiBaseUrl with values \"Not found\" in each printed on a blank HTML page.\" width=\"902\" height=\"448\"><figcaption id=\"caption-attachment-125220\" class=\"wp-caption-text\">Imprimiendo los valores por defecto de las variables de <code>env<\/code>.<\/figcaption><\/figure>\n<p>Esto indica que tu aplicaci\u00f3n no puede acceder actualmente a las variables de entorno. Adem\u00e1s, ni siquiera hemos definido los valores de estas variables. Veamos las distintas formas disponibles para hacerlo en las siguientes secciones.<\/p>\n<h3>Tipo 1: A\u00f1adir variables de entorno mediante archivos env<\/h3>\n<p>Empecemos por la forma m\u00e1s b\u00e1sica de a\u00f1adir variables de entorno: los archivos env. En la ra\u00edz de tu proyecto, crea un nuevo archivo llamado <code>.env<\/code> y guarda en \u00e9l el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-bash\">environment=DEV\napiBaseUrl=http:\/\/dev.myApi.com:8080\/v1\n<\/code><\/pre>\n<p>A continuaci\u00f3n, reinicia tu aplicaci\u00f3n ejecutando de nuevo el comando <code>node index.js<\/code> y comprueba el resultado:<\/p>\n<figure id=\"attachment_125220\" aria-describedby=\"caption-attachment-125220\" style=\"width: 902px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-125220\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/env-apibaseurl-not-found-1.png\" alt=\"A JSON object with two keys environment and apiBaseUrl with values \"Not found\" in each printed on a blank HTML page.\" width=\"902\" height=\"448\"><figcaption id=\"caption-attachment-125220\" class=\"wp-caption-text\">Imprimiendo los valores de las variables de <code>env<\/code>.<\/figcaption><\/figure>\n<p>Ver\u00e1s que la salida sigue siendo la misma. Esto se debe a que, aunque hayas definido el valor de las variables de entorno, en realidad no has indicado a tu aplicaci\u00f3n d\u00f3nde encontrarlas. Aqu\u00ed es donde paquetes como <code>dotenv<\/code> resultan \u00fatiles.<\/p>\n<p>Ejecuta el siguiente comando para instalar <code>dotenv<\/code>:<\/p>\n<pre><code class=\"language-bash\">npm i dotenv@16.0.0\n<\/code><\/pre>\n<p>Para empezar a utilizar <code>dotenv<\/code> en tu c\u00f3digo, a\u00f1ade el siguiente c\u00f3digo en la l\u00ednea n\u00famero 2 de tu index.js:<\/p>\n<pre><code class=\"language-js\">require('dotenv').config()\n<\/code><\/pre>\n<p>A continuaci\u00f3n, reinicia la aplicaci\u00f3n y comprueba la salida:<\/p>\n<figure id=\"attachment_125221\" aria-describedby=\"caption-attachment-125221\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125221\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/env-dev-apibaseurl-dev-myapi-com-1024x433.png\" alt=\"A JSON object with two keys environment and apiBaseUrl with values DEV and http:\/\/dev.myApi.com:8080\/v1 in each printed on a blank HTML page.\" width=\"1024\" height=\"433\"><figcaption id=\"caption-attachment-125221\" class=\"wp-caption-text\">Imprimiendo los nuevos valores de las variables <code>env<\/code>.<\/figcaption><\/figure>\n<p>Como puedes ver, \u00a1los valores de las variables de entorno se han cargado desde tu archivo <code>.env<\/code>!<\/p>\n<p>Ahora, para animar las cosas, vamos a cambiar el nombre de nuestro archivo <code>.env<\/code> por <code>.env.dev<\/code> y a crear otro archivo con el nombre <code>.env.staging<\/code>. Pega el siguiente fragmento de c\u00f3digo en el nuevo archivo:<\/p>\n<pre><code class=\"language-bash\">environment=STAGING\napiBaseUrl=http:\/\/staging.myApi.com:3000\/v1\n<\/code><\/pre>\n<p>Cuando hayas terminado, sustituye la l\u00ednea n\u00famero 2 de tu archivo <code>index.js<\/code> por el siguiente trozo de c\u00f3digo:<\/p>\n<pre><code class=\"language-js\">require('dotenv').config({\n   path: \"STAGING\" === process.env.NODE_ENV?.toUpperCase() ? '.\/.env.staging' : '.\/.env.dev'\n})\n\nconsole.log(process.env.NODE_ENV)\n<\/code><\/pre>\n<p>Lo que ha cambiado aqu\u00ed es que ahora estamos dando instrucciones al paquete <code>dotenv<\/code> para que obtenga el contenido de las variables de entorno de uno de los dos archivos disponibles en funci\u00f3n de otra variable de entorno llamada <code>NODE_ENV<\/code>. \u00bfDe d\u00f3nde procede el valor de esta variable de entorno? De tu terminal.<\/p>\n<p>Para probar esta configuraci\u00f3n, ejecuta tu aplicaci\u00f3n con el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">NODE_ENV=DEV node index.js\n<\/code><\/pre>\n<p>Si ahora vas a localhost:8080, ver\u00e1s la siguiente respuesta:<\/p>\n<figure id=\"attachment_125221\" aria-describedby=\"caption-attachment-125221\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125221\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/env-dev-apibaseurl-dev-myapi-com-1024x433.png\" alt=\"A JSON object with two keys environment and apiBaseUrl with values DEV and http:\/\/dev.myApi.com:8080\/v1 in each printed on a blank HTML page.\" width=\"1024\" height=\"433\"><figcaption id=\"caption-attachment-125221\" class=\"wp-caption-text\">Imprimiendo los valores env para el entorno dev.<\/figcaption><\/figure>\n<p>Ahora, termina la aplicaci\u00f3n que se est\u00e1 ejecutando y ejec\u00fatala de nuevo con el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">NODE_ENV=STAGING node index.js\n<\/code><\/pre>\n<p>Si te diriges a localhost:8080, obtendr\u00e1s la siguiente respuesta:<\/p>\n<figure id=\"attachment_125222\" aria-describedby=\"caption-attachment-125222\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125222\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/dev-staging-apibaseurl-staging-myapi-com-1024x386.png\" alt=\"A JSON object with keys environment and apiBaseUrl and values STAGING and http:\/\/staging.myApi.com:3000\/v1 in each printed on a blank HTML page.\" width=\"1024\" height=\"386\"><figcaption id=\"caption-attachment-125222\" class=\"wp-caption-text\">Imprimiendo los valores env para el entorno de staging.<\/figcaption><\/figure>\n<p>As\u00ed es como puedes utilizar los archivos <code>.env<\/code> para acceder a diferentes conjuntos de variables en funci\u00f3n de condiciones externas. La condici\u00f3n externa aqu\u00ed es la variable de entorno externo <code>NODE_ENV<\/code>, que es esencialmente una variable de entorno de usuario, mientras que <code>environment<\/code> y <code>apiBaseUrl<\/code> eran variables de entorno en tiempo de ejecuci\u00f3n. El perfil de usuario que llama proporciona el valor de la variable <code>NODE_ENV<\/code> y la aplicaci\u00f3n lo utiliza para tomar decisiones internas.<\/p>\n<p>En caso de que est\u00e9s en Windows, puede que tengas dificultades al ejecutar los dos comandos anteriores. El terminal de Windows podr\u00eda no permitirte asignar variables de entorno de usuario sobre la marcha utilizando la sintaxis <code>KEY=VALUE<\/code> (a menos que sea Bash en Windows).<\/p>\n<p>Una soluci\u00f3n r\u00e1pida en ese caso es utilizar scripts y <code>cross-env<\/code>.<\/p>\n<p>Instala <code>cross-env<\/code> ejecutando el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">npm i --save-dev cross-env\n<\/code><\/pre>\n<p>A continuaci\u00f3n, ve a tu archivo <code>package.json<\/code> y actualiza la clave <code>scripts<\/code> para que coincida con esto:<\/p>\n<pre><code class=\"language-json\">\/\/ \u2026\n\"scripts\": {\n   \"test\": \"echo \"Error: no test specified\" && exit 1\",\n   \"start-dev\": \"cross-env NODE_ENV=DEV node index.js\",\n   \"start-staging\": \"cross-env NODE_ENV=STAGING node index.js\"\n },\n\/\/ \u2026\n<\/code><\/pre>\n<p>Ahora puedes ejecutar los siguientes comandos para ejecutar tu aplicaci\u00f3n con dos conjuntos diferentes de variables de entorno:<\/p>\n<pre><code class=\"language-bash\">npm run start-dev\t\t# to start with dev variables\nnpm run start-staging\t\t# to start with staging variables\n<\/code><\/pre>\n<p>Esta es una soluci\u00f3n universal y puedes utilizar estos scripts tambi\u00e9n en bash\/zsh.<\/p>\n<p>A continuaci\u00f3n, vamos a ver c\u00f3mo utilizar un gestor de variables de terceros.<\/p>\n<h3>Tipo 2: Usar el gestor de variables de entorno nativo de Heroku<\/h3>\n<p>Para poder seguir esta parte del tutorial, necesitar\u00e1s una cuenta de Heroku. Ve y cr\u00e9ala antes de seguir adelante.<\/p>\n<p>Antes de desplegar la aplicaci\u00f3n en Heroku, hay algunos cambios que tendr\u00e1s que hacer en tu c\u00f3digo. En primer lugar, a\u00f1ade un nuevo script en tu <code>package.json<\/code> llamado start:<\/p>\n<pre><code class=\"language-json\">\"scripts\": {\n   \"test\": \"echo \"Error: no test specified\" && exit 1\",\n   \"start\": \"node index.js\",\n   \"start-dev\": \"cross-env NODE_ENV=DEV node index.js\",\n   \"start-staging\": \"cross-env NODE_ENV=STAGING node index.js\"\n },\n<\/code><\/pre>\n<p>Este script ser\u00e1 utilizado por Heroku para ejecutar tu aplicaci\u00f3n una vez desplegada. Adem\u00e1s, ve a la \u00faltima l\u00ednea de tu archivo <code>index.js<\/code> y actual\u00edzala con lo siguiente:<\/p>\n<pre><code class=\"language-js\">app.listen(process.env.PORT || 3000);\n<\/code><\/pre>\n<p>Esto asegurar\u00e1 que la aplicaci\u00f3n se despliegue en el puerto especificado por Heroku.<\/p>\n<p>A continuaci\u00f3n, tienes que <a href=\"https:\/\/devcenter.heroku.com\/articles\/heroku-cli#install-the-heroku-cli\" target=\"_blank\" rel=\"noopener noreferrer\">instalar la CLI de Heroku<\/a> localmente para poder acceder a tus aplicaciones de Heroku desde tu l\u00ednea de comandos. Para este tutorial, puedes utilizar el siguiente comando para instalar la CLI:<\/p>\n<pre><code class=\"language-bash\">npm i -g heroku\n<\/code><\/pre>\n<p>Sin embargo, los documentos de Heroku recomiendan instalarla a trav\u00e9s de una de las otras formas enumeradas en el enlace mencionado anteriormente para obtener un mejor soporte. Una vez instalado, ejecuta el siguiente comando para iniciar sesi\u00f3n en tu cuenta de Heroku:<\/p>\n<pre><code class=\"language-bash\">heroku login\n<\/code><\/pre>\n<p>Una vez hecho esto, ve a dashboard.heroku.com y entra en tu cuenta. A continuaci\u00f3n, crea una nueva aplicaci\u00f3n haciendo clic en <strong>Nuevo<\/strong> &gt; <strong>Crear nueva aplicaci\u00f3n<\/strong>.<\/p>\n<figure id=\"attachment_125224\" aria-describedby=\"caption-attachment-125224\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125224\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-new-app-1024x250.png\" alt=\"Heroku's dashboard with the new dropdown open showing an option to create a new app.\" width=\"1024\" height=\"250\"><figcaption id=\"caption-attachment-125224\" class=\"wp-caption-text\">Creando una nueva app.<\/figcaption><\/figure>\n<p>En la siguiente p\u00e1gina, haz clic en el bot\u00f3n Crear <strong>App<\/strong> sin introducir ning\u00fan detalle. Esto crear\u00e1 una nueva heroku app para ti con un nombre aleatorio.<\/p>\n<figure id=\"attachment_125225\" aria-describedby=\"caption-attachment-125225\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125225\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-naming-app-1024x371.png\" alt=\"A form with a text input to enter the new app's name and choose a region.\" width=\"1024\" height=\"371\"><figcaption id=\"caption-attachment-125225\" class=\"wp-caption-text\">Poniendo nombre a tu app.<\/figcaption><\/figure>\n<p>Este es el aspecto que tendr\u00eda el panel de control de tu app:<\/p>\n<figure id=\"attachment_125226\" aria-describedby=\"caption-attachment-125226\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125226\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-new-app-dashboard-1024x583.png\" alt=\"The new app's homepage with instructions to deploy for the first time.\" width=\"1024\" height=\"583\"><figcaption id=\"caption-attachment-125226\" class=\"wp-caption-text\">El nuevo panel de control de la aplicaci\u00f3n.<\/figcaption><\/figure>\n<p>Esta p\u00e1gina tambi\u00e9n contiene instrucciones sobre c\u00f3mo desplegar tu aplicaci\u00f3n en Heroku a trav\u00e9s de la CLI. Aqu\u00ed est\u00e1 la lista de comandos que tienes que ejecutar para desplegar tu aplicaci\u00f3n en Heroku:<\/p>\n<pre><code class=\"language-bash\">git init\nheroku git:remote -a whispering-shelf-49396 # change whispering-shelf-49396 with the name of your app. You can get it in your dashboard\ngit add index.js package-lock.json package.json # do not push the <code>.env<\/code> files since we'll provide that via the in-app secrets manager git commit -am \"Initial commit\" git push heroku main <\/code><\/pre>\n<p>Una vez que el despliegue se ha completado con \u00e9xito, puedes ver la aplicaci\u00f3n desplegada a trav\u00e9s del panel de control haciendo clic en el bot\u00f3n <strong>Abrir aplicaci\u00f3n<\/strong><\/p>\n<p>Si lo has hecho todo bien, ver\u00e1s la siguiente respuesta:<\/p>\n<figure id=\"attachment_125227\" aria-describedby=\"caption-attachment-125227\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125227\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-env-apibaseurl-not-found-1024x505.png\" alt=\"A JSON object with keys environment and apiBaseUrl and values \"Not found\" in each printed on a blank HTML page.\" width=\"1024\" height=\"505\"><figcaption id=\"caption-attachment-125227\" class=\"wp-caption-text\">Accediendo a tu aplicaci\u00f3n desplegada.<\/figcaption><\/figure>\n<p>\u00bfPor qu\u00e9 ocurre esto, puedes pensar? Es porque a\u00fan no hemos proporcionado las variables de entorno a nuestra app de ninguna forma. Si compruebas los comandos que has utilizado para desplegar la aplicaci\u00f3n, te dar\u00e1s cuenta de que no hemos enviado los archivos <code>.env<\/code> a nuestro control de versiones. Tampoco hemos definido el valor <code>NODE_ENV<\/code> en el script de inicio.<\/p>\n<p>Para inyectar ahora las variables de entorno en tu aplicaci\u00f3n, tienes que ir a <strong>Configuraci\u00f3n<\/strong> &gt; Vars <strong>de configuraci\u00f3n<\/strong> en tu panel de control de Heroku. Al hacer clic en <strong>Reveal Config <\/strong>Vars, ver\u00e1s una pantalla similar:<\/p>\n<figure id=\"attachment_125228\" aria-describedby=\"caption-attachment-125228\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125228\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-app-config-vars-1024x593.png\" alt=\"The new app's settings page showing app information and an empty list of configuration variables.\" width=\"1024\" height=\"593\"><figcaption id=\"caption-attachment-125228\" class=\"wp-caption-text\">Accediendo a los vares de configuraci\u00f3n de tu app.<\/figcaption><\/figure>\n<p>Ahora puedes introducir aqu\u00ed el contenido de tu archivo <code>.env<\/code>:<\/p>\n<figure id=\"attachment_125229\" aria-describedby=\"caption-attachment-125229\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125229\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-app-config-vars-filled-1024x593.png\" alt=\"The new app's settings page showing app information and a populated list of configuration variables.\" width=\"1024\" height=\"593\"><figcaption id=\"caption-attachment-125229\" class=\"wp-caption-text\">Introduciendo tus variables de entorno en Heroku.<\/figcaption><\/figure>\n<p>Si vuelves y actualizas la URL de tu aplicaci\u00f3n, ver\u00e1s que los valores se han actualizado:<\/p>\n<figure id=\"attachment_125230\" aria-describedby=\"caption-attachment-125230\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125230\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-env-production-apibaseurl-prod-myapi-com-1024x374.png\" alt=\"A JSON object with keys environment and apiBaseUrl and values PRODUCTION and http:\/\/prod.myApi.com\/v1 in each printed on a blank HTML page.\" width=\"1024\" height=\"374\"><figcaption id=\"caption-attachment-125230\" class=\"wp-caption-text\">La app desplegada en Heroku ya puede acceder a las variables de entorno.<\/figcaption><\/figure>\n<p>As\u00ed es como puedes hacer uso del gestor de secretos de una plataforma de despliegue para gestionar tus variables de entorno. Sin embargo, esto requiere que gestiones manualmente las variables de entorno a trav\u00e9s del panel de control de la plataforma. Como puedes ver en el caso de Heroku, no hay ninguna opci\u00f3n para importar un gran volcado de variables de entorno desde un archivo, lo que te obliga a introducirlas una a una. Esto puede resultar bastante molesto a veces.<\/p>\n<p>La siguiente secci\u00f3n presenta un m\u00e9todo m\u00e1s eficiente para gestionar los secretos de las aplicaciones: los gestores de secretos.<\/p>\n<h3>Tipo 3: Usar Doppler para gestionar las variables de entorno<\/h3>\n<p>Los m\u00e9todos comentados anteriormente no proporcionan uniformidad en todas las plataformas. Por lo general, no dependes de los archivos env al desplegar a producci\u00f3n, y no es posible hacer uso de los gestores de variables nativos de la plataforma cuando se trabaja localmente. Los gestores secretos como Doppler llenan este vac\u00edo.<\/p>\n<p>Para probarlo por ti mismo, primero tienes que crear una cuenta gratuita en <a href=\"https:\/\/dashboard.doppler.com\/login\" target=\"_blank\" rel=\"noopener noreferrer\">Doppler<\/a>.<\/p>\n<p>Una vez hecho, puedes seguir. Lo m\u00e1s probable es que te cree autom\u00e1ticamente un proyecto de ejemplo con el nombre de proyecto-ejemplo. Para simplificar, vamos a dejarlo a un lado y a crear un proyecto nuevo para nuestro caso de uso.<\/p>\n<p>Ve al panel de control y haz clic en el icono del signo m\u00e1s junto a Proyectos.<\/p>\n<figure id=\"attachment_125231\" aria-describedby=\"caption-attachment-125231\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125231\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-projects-1024x461.png\" alt=\"Doppler's projects section showing one project named example-project.\" width=\"1024\" height=\"461\"><figcaption id=\"caption-attachment-125231\" class=\"wp-caption-text\">Tus proyectos en Doppler.<\/figcaption><\/figure>\n<p>Introduce su nombre como \u00abmi-app\u00bb y procede. Este es el aspecto que deber\u00eda tener el proyecto una vez que est\u00e9 listo:<\/p>\n<figure id=\"attachment_125232\" aria-describedby=\"caption-attachment-125232\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125232\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-project-env-1024x321.png\" alt=\"A set of environments with empty lists of variables on the app dashboard in Doppler.\" width=\"1024\" height=\"321\"><figcaption id=\"caption-attachment-125232\" class=\"wp-caption-text\">Los entornos y variables de tu proyecto.<\/figcaption><\/figure>\n<p>Haz clic en el elemento de la lista dev config. Haz clic en <strong>A\u00f1adir Nuevo Secreto<\/strong> y a\u00f1ade dos secretos de la siguiente manera<\/p>\n<figure id=\"attachment_125233\" aria-describedby=\"caption-attachment-125233\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125233\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-dev-env-vars-filled-1024x486.png\" alt=\"A populated list of environment variables under the dev environment on Doppler\" width=\"1024\" height=\"486\"><figcaption id=\"caption-attachment-125233\" class=\"wp-caption-text\">A\u00f1adiendo las variables dev a Doppler.<\/figcaption><\/figure>\n<p>Haz clic en el bot\u00f3n \u00abGuardar\u00bb para guardar los cambios. Ten en cuenta que Doppler no admite el uso de may\u00fasculas al nombrar tus secretos. Aunque generalmente se prefiere mantener los nombres de los secretos en may\u00fasculas, el uso de Doppler no te deja otra opci\u00f3n. Para identificar los secretos que se obtienen de Doppler, les hemos puesto el prefijo <code>DP_<\/code><\/p>\n<p>Ahora que las variables est\u00e1n creadas y almacenadas en Doppler, vamos a integrarlas en nuestro c\u00f3digo. Para ello, tienes que <a href=\"https:\/\/docs.doppler.com\/docs\/install-cli\" target=\"_blank\" rel=\"noopener noreferrer\">configurar la CLI<\/a> de Doppler. Aqu\u00ed tienes un resumen de lo que tienes que hacer.<\/p>\n<p>En primer lugar, instala la CLI localmente siguiendo las <a href=\"https:\/\/docs.doppler.com\/docs\/install-cli#installation\" target=\"_blank\" rel=\"noopener noreferrer\">instrucciones espec\u00edficas de tu sistema<\/a> operativo. A continuaci\u00f3n, inicia sesi\u00f3n en la CLI de Doppler con tu cuenta reci\u00e9n creada utilizando el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">doppler login\n<\/code><\/pre>\n<p>Una vez iniciada la sesi\u00f3n, ejecuta el siguiente comando para conectarte a tu proyecto Doppler remoto desde tu CLI:<\/p>\n<pre><code class=\"language-bash\">doppler setup\n<\/code><\/pre>\n<p>Una vez que te hayas conectado al proyecto correcto, podr\u00e1s acceder a tus secretos mediante el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">doppler run\n<\/code><\/pre>\n<p>Sin embargo, no ejecutaremos este comando directamente. En su lugar, lo a\u00f1adiremos a uno de nuestros scripts de ejecuci\u00f3n para que se ejecute autom\u00e1ticamente cada vez que se inicie la aplicaci\u00f3n. Vamos a actualizar el archivo <code>package.json<\/code> con el nuevo script de ejecuci\u00f3n para el entorno <code>dev<\/code>:<\/p>\n<pre><code class=\"language-json\">\/\/ \u2026\n\"scripts\": {\n   \"test\": \"echo \"Error: no test specified\" && exit 1\",\n   \"start\": \"node index.js\",\n   \"start-dev\": \"doppler run -- node index.js\", \/\/ This has to be updated\n   \"start-staging\": \"cross-env NODE_ENV=STAGING node index.js\"\n },\n\/\/ \u2026\n<\/code><\/pre>\n<p>Adem\u00e1s, recuerda que hemos creado nuevos nombres de variables en Doppler que empiezan por <code>DP_<\/code>. As\u00ed que tendremos que actualizar nuestro archivo <code>index.js<\/code> para que tambi\u00e9n muestre esta variable:<\/p>\n<pre><code class=\"language-js\">const express = require(\"express\")\nrequire('dotenv').config({\n   path: \"STAGING\" === process.env.NODE_ENV?.toUpperCase() ? '.\/.env.staging' : '.\/.env.dev'\n})\n\nconsole.log(process.env.NODE_ENV)\n\nconst app = express()\n\napp.get(\"\/\", (req, res) =&gt; {\n  \n   \/\/ the responseMessage object extracts its values from environment variables\n   \/\/ If a value is not found, it instead stores the string \"not found\"\n   const responseMessage = {\n       environment: process.env.environment || \"Not found\",\n       apiBaseUrl: process.env.apiBaseUrl || \"Not found\",\n       DP_ENVIRONMENT: process.env.DP_ENVIRONMENT || \"Not found\" \/\/ Add the new variable here\n   }\n\n   res.send(responseMessage)\n})\n\napp.listen(process.env.PORT || 3000);\n<\/code><\/pre>\n<p>Para ver las cosas en acci\u00f3n, ejecuta el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">npm run start-dev\n<\/code><\/pre>\n<p>Este es el aspecto que deber\u00eda tener ahora http:\/\/localhost:3000:<\/p>\n<figure id=\"attachment_125234\" aria-describedby=\"caption-attachment-125234\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125234\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-env-dev-apibaseurl-dev-myapi-com-dpenv-dev-1024x402.png\" alt=\"A JSON object with keys environment, apiBaseUrl, and DP_ENVIRONMENT and values DEV, http:\/\/dev.myApi.com:8080\/v1, and DOPPLER_DEV in each printed on a blank HTML page.\" width=\"1024\" height=\"402\"><figcaption id=\"caption-attachment-125234\" class=\"wp-caption-text\">Accediendo a los secretos de Doppler en una aplicaci\u00f3n que se ejecuta localmente.<\/figcaption><\/figure>\n<p>La tercera variable de la lista (<code>DP_ENVIRONMENT<\/code>) se obtiene directamente de Doppler.<\/p>\n<p>A continuaci\u00f3n, puedes conectar Doppler con tu plataforma de despliegue para acceder a estos secretos a trav\u00e9s de tu aplicaci\u00f3n desplegada. Para ello, vamos a empezar creando un nuevo entorno en Doppler para un nuevo conjunto de secretos de despliegue.<\/p>\n<p>Vuelve a la p\u00e1gina de inicio de tu proyecto my-app. Haz clic en el \u00fanico elemento de la lista de <strong>puesta en escena<\/strong>:<\/p>\n<figure id=\"attachment_125235\" aria-describedby=\"caption-attachment-125235\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125235\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-projects-vars-filled-1024x381.png\" alt=\"Lists of environment variables under the my-app project with two variables defined under the development environment.\" width=\"1024\" height=\"381\"><figcaption id=\"caption-attachment-125235\" class=\"wp-caption-text\">El panel de control de tu aplicaci\u00f3n.<\/figcaption><\/figure>\n<p>Observar\u00e1s que las dos variables secretas que has definido en el entorno <code>dev<\/code> ya est\u00e1n disponibles aqu\u00ed, pero les faltan valores:<\/p>\n<figure id=\"attachment_125236\" aria-describedby=\"caption-attachment-125236\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125236\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-stg-vars-empty-1024x559.png\" alt=\"Lists of environment variables under the staging environment with missing values.\" width=\"1024\" height=\"559\"><figcaption id=\"caption-attachment-125236\" class=\"wp-caption-text\">Las variables de entorno de tu app para el entorno de preparaci\u00f3n.<\/figcaption><\/figure>\n<p>A\u00f1ade los siguientes valores y haz clic en <strong>Guardar<\/strong>:<\/p>\n<figure id=\"attachment_125237\" aria-describedby=\"caption-attachment-125237\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125237\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-stg-vars-filled-1024x397.png\" alt=\"Populated list of environment variables under the staging environment of your app.\" width=\"1024\" height=\"397\"><figcaption id=\"caption-attachment-125237\" class=\"wp-caption-text\">Las variables de entorno de tu aplicaci\u00f3n para el entorno de preparaci\u00f3n.<\/figcaption><\/figure>\n<p>Una vez hecho esto, haz clic en la pesta\u00f1a <strong>Integraciones<\/strong> y en <strong>A\u00f1adir Sincronizaci\u00f3n<\/strong> en esta p\u00e1gina para empezar a conectar con tu plataforma de despliegue. Recibir\u00e1s una lista de plataformas con las que Doppler puede integrarse:<\/p>\n<figure id=\"attachment_125238\" aria-describedby=\"caption-attachment-125238\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125238\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-integrations-set-up-1024x574.png\" alt=\"List of deployment platforms that Doppler can integrate with.\" width=\"1024\" height=\"574\"><figcaption id=\"caption-attachment-125238\" class=\"wp-caption-text\">Conectando tu aplicaci\u00f3n Doppler a Heroku.<\/figcaption><\/figure>\n<p>Como nuestra app est\u00e1 desplegada en Heroku, vamos a hacer clic en Heroku. Sigue los pasos que aparecen en pantalla para conectar tu cuenta de Heroku a Doppler y proporcionar los roles de acceso necesarios. Una vez conectada, llegar\u00e1s a una pantalla similar:<\/p>\n<figure id=\"attachment_125239\" aria-describedby=\"caption-attachment-125239\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125239\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-integration-1024x574.png\" alt=\"Heroku integration flow with a form on right that asks for project and config details.\" width=\"1024\" height=\"574\"><figcaption id=\"caption-attachment-125239\" class=\"wp-caption-text\">Proporciona los detalles de tu aplicaci\u00f3n para integrarla con Heroku.<\/figcaption><\/figure>\n<p>Selecciona el <strong>Tipo de Proyecto<\/strong> como <strong>App<\/strong>, elige tu app de Heroku en la lista de apps disponibles, elige stg como la <strong>Configuraci\u00f3n a sincronizar<\/strong>, y <strong>No Importar<\/strong> en <strong>las Opciones de Importaci\u00f3n<\/strong>, ya que no queremos importar ning\u00fan secreto de Heroku a Doppler.<\/p>\n<p>Haz clic en <strong>Configurar integraci\u00f3n<\/strong> cuando hayas terminado. Llegar\u00e1s a una pantalla similar cuando la integraci\u00f3n se realice con \u00e9xito:<\/p>\n<figure id=\"attachment_125240\" aria-describedby=\"caption-attachment-125240\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125240\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/doppler-integration-heroku-1024x574.png\" alt=\"List of integrated apps in Heroku, with the connect name, environment, destination URL, and status.\" width=\"1024\" height=\"574\"><figcaption id=\"caption-attachment-125240\" class=\"wp-caption-text\">Las integraciones de tu aplicaci\u00f3n Doppler con Heroku.<\/figcaption><\/figure>\n<p>Ahora, si compruebas la secci\u00f3n <strong>Config Vars<\/strong> en el panel de control de tu app de Heroku, ver\u00e1s que las variables de Doppler se han a\u00f1adido autom\u00e1ticamente a las config vars de tu despliegue de Heroku:<\/p>\n<figure id=\"attachment_125241\" aria-describedby=\"caption-attachment-125241\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125241\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-dopper-config-vars-1024x334.png\" alt=\"Populated list of environment variables in the Config Vars section of your Heroku app.\" width=\"1024\" height=\"334\"><figcaption id=\"caption-attachment-125241\" class=\"wp-caption-text\">Los secretos de Doppler est\u00e1n ahora sincronizados con Heroku.<\/figcaption><\/figure>\n<p>Tambi\u00e9n observar\u00e1s que se han eliminado las dos variables de entorno originales (<code>environment<\/code> y <code>apiBaseUrl<\/code>). Esto ha ocurrido porque hemos elegido <strong>No Importar<\/strong> en <strong>las Opciones de Importaci\u00f3n<\/strong>. Puedes seguir adelante y a\u00f1adirlas de nuevo en Heroku si es necesario.<\/p>\n<p>Mientras la presencia de las nuevas variables de entorno en la secci\u00f3n <strong>Config Vars<\/strong> de Heroku demuestra que has configurado con \u00e9xito Doppler para gestionar los secretos tanto localmente en tu entorno de desarrollo como en tu entorno de despliegue, puedes seguir adelante y desplegar el c\u00f3digo actualizado en Heroku para ver los cambios en la aplicaci\u00f3n desplegada. Este es el aspecto que tendr\u00e1 cuando est\u00e9 hecho:<\/p>\n<figure id=\"attachment_125242\" aria-describedby=\"caption-attachment-125242\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-125242\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/06\/heroku-doppler-env-staging-apibaseurl-staging-myapi-com-dpenv-staging-1024x383.png\" alt=\"A JSON object with keys environment, apiBaseUrl, and DP_ENVIRONMENT and values STAGING, http:\/\/staging.myApi.com:3000\/v1, and DOPPLER_STAGING in each printed on a blank HTML page.\" width=\"1024\" height=\"383\"><figcaption id=\"caption-attachment-125242\" class=\"wp-caption-text\">Accediendo a los secretos de Doppler en una app desplegada en Heroku.<\/figcaption><\/figure>\n<p>Esto completa el tutorial para configurar variables de entorno en un proyecto Node.js utilizando tres m\u00e9todos populares. A continuaci\u00f3n, vamos a ver algunas formas de asegurar que tus variables de entorno y sus archivos est\u00e9n seguros mientras se utilizan.<\/p>\n<h2>\u00bfC\u00f3mo Mantener Seguros los Archivos de las Variables de Entorno?<\/h2>\n<p>Aunque las variables de entorno son un recurso \u00fatil en las pr\u00e1cticas modernas de DevOps, debes ser consciente de las implicaciones de seguridad que pueden provocar. Aqu\u00ed tienes algunos consejos que puedes utilizar para mantener tus archivos de variables de entorno seguros y alejados de miradas indiscretas.<\/p>\n<h3>Mant\u00e9n los archivos de entorno fuera del control de versiones<\/h3>\n<p>Una de las cosas m\u00e1s importantes que debes tener en cuenta al manejar cualquier secreto es mantenerlos fuera del control de versiones. El control de versiones est\u00e1 pensado \u00fanicamente para seguir los cambios en el c\u00f3digo fuente de tu aplicaci\u00f3n. Todo lo que entra en un sistema de control de versiones permanece en \u00e9l hasta que se elimina expl\u00edcitamente, y la mayor parte de tu equipo tiene acceso a estos datos hist\u00f3ricos con fines de referencia.<\/p>\n<p>Si has almacenado las claves de tu cubo de almacenamiento de AWS o de un servicio de API de pago en un archivo env para su uso en tu aplicaci\u00f3n, no querr\u00e1s compartirlo con todo tu equipo de desarrollo, a menos que sea necesario que tengan acceso a \u00e9l. Si tu proyecto es de c\u00f3digo abierto en una <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-github\/\">plataforma como GitHub<\/a>, a\u00f1adir archivos env a tu VCS podr\u00eda significar compartirlo con todo el mundo Los archivos env est\u00e1n pensados para ser almacenados localmente. Puedes proporcionar a cada entorno de despliegue los archivos env pertinentes mediante m\u00e9todos espec\u00edficos.<\/p>\n<p>A\u00f1ade siempre el archivo env a tu archivo <strong>.gitignore<\/strong> (suponiendo que utilices git para el control de versiones) o emplea cualquier otra forma para que tu VCS omita los archivos env al realizar los cambios. Puedes considerar a\u00f1adir un archivo env de plantilla a tu VCS para que cualquier otro miembro del equipo pueda utilizarlo como referencia para crear sus archivos env localmente.<\/p>\n<h3>Comprueba el nombre del paquete antes de instalarlo<\/h3>\n<p>Dado que normalmente instalas la mayor\u00eda de los paquetes desde NPM cuando trabajas con una aplicaci\u00f3n Node.js, debes tener especial cuidado al hacerlo. Es bien sabido que cualquiera puede crear y desplegar un paquete NPM. Y tampoco es de extra\u00f1ar que la gente se equivoque a menudo al escribir el nombre de un paquete que quiere instalar.<\/p>\n<p>Se han observado <a href=\"https:\/\/therecord.media\/another-set-of-malicious-npm-packages-caught-stealing-discord-tokens-environment-variables\/\" target=\"_blank\" rel=\"noopener noreferrer\">m\u00faltiples casos<\/a> en los que paquetes maliciosos con nombres similares a algunos paquetes populares han sido instalados accidentalmente por los usuarios debido a errores de escritura. Dichos paquetes est\u00e1n dise\u00f1ados para obtener acceso a las variables de entorno de tu aplicaci\u00f3n y enviarlas por Internet a sus creadores.<\/p>\n<p>La \u00fanica forma de salvarse es estar alerta cuando se instalen nuevos paquetes desde Internet.<\/p>\n<h3>Prefiere los gestores secretos a los archivos env<\/h3>\n<p>Con problemas como la filtraci\u00f3n accidental al compartir y los errores de formato, los archivos env ciertamente no son la mejor opci\u00f3n disponible para la gesti\u00f3n de secretos. Entra en los gestores secretos. Los gestores de secretos, como Doppler, te permiten aislar completamente los secretos de tu aplicaci\u00f3n del c\u00f3digo fuente y gestionarlos en una plataforma dedicada.<\/p>\n<p>Puedes conceder a tu equipo acceso a estos secretos directamente en la plataforma, y tu aplicaci\u00f3n puede acceder a ellos a trav\u00e9s de conexiones encriptadas en Internet. Resuelve todos los problemas asociados a los archivos env, al tiempo que te permite la flexibilidad de mantener conjuntos de secretos basados en los entornos de tu aplicaci\u00f3n.<\/p>\n<p>Sin embargo, aqu\u00ed tambi\u00e9n hay advertencias. Los gestores de secretos est\u00e1n en una fase muy temprana de su desarrollo tecnol\u00f3gico. Adem\u00e1s, los gestores de secretos son plataformas de terceros que est\u00e1n sujetas a su propio conjunto de problemas de seguridad. Por tanto, es importante evaluar y seleccionar cuidadosamente el gestor secreto adecuado. Adem\u00e1s, si tu aplicaci\u00f3n, su equipo de desarrollo o el n\u00famero de secretos de la aplicaci\u00f3n no es lo suficientemente grande, los gestores secretos podr\u00edan ser excesivos para ti.<\/p>\n<h2>Tabla de Referencia de las Variables de Entorno<\/h2>\n<p>Aqu\u00ed tienes una r\u00e1pida hoja de trucos para ayudarte a ponerte al d\u00eda con las variables de entorno y su uso r\u00e1pidamente:<\/p>\n<div class=\"\"responsive-table\">\n<table>\n<tbody>\n<tr>\n<td>Definici\u00f3n de las variables de entorno<\/td>\n<td>Variables suministradas a los procesos por sus procesos de llamada<\/td>\n<\/tr>\n<tr>\n<td>Prop\u00f3sito<\/td>\n<td>\n<ul>\n<li>Almacenar y asegurar los secretos de la app<\/li>\n<li>Gestionar los datos de configuraci\u00f3n espec\u00edficos del entorno<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>Tipos<\/td>\n<td>S\u00f3lo para Windows:<\/p>\n<ul>\n<li>Sistema<\/li>\n<li>Usuario<\/li>\n<li>Tiempo de ejecuci\u00f3n\/proceso<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>Ejemplos populares de uso<\/td>\n<td>\n<ul>\n<li>Claves privadas<\/li>\n<li>Nombres de entorno<\/li>\n<li>URLs base de la API, etc<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>\u00bfC\u00f3mo implementarlos en tu aplicaci\u00f3n?<\/td>\n<td>\n<ul>\n<li>archivos .env<\/li>\n<li>Gestores de secretos nativos de la plataforma<\/li>\n<li>Servicio de gesti\u00f3n de secretos dedicado<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<h2>Resumen<\/h2>\n<p>Las variables de entorno son importantes para aislar los datos sensibles de tu aplicaci\u00f3n. Ayudan a asegurar los secretos de tu aplicaci\u00f3n y te permiten cambiar f\u00e1cilmente entre conjuntos de secretos en funci\u00f3n del entorno de la aplicaci\u00f3n. Sin embargo, gestionarlas significa otra tarea para t\u00ed.<\/p>\n<p>Hay m\u00faltiples formas de asegurar y variables de entorno, como hemos comentado anteriormente. Expl\u00f3ralas todas y encuentra la que mejor se adapte y acelere tu proyecto.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si has trabajado en cualquier forma de desarrollo de aplicaciones, seguro que ya has o\u00eddo hablar del t\u00e9rmino \u00abvariables de entorno\u00bb Las variables de entorno se &#8230;<\/p>\n","protected":false},"author":238,"featured_media":54106,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[856,867,847],"topic":[1329],"class_list":["post-54105","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-development","tag-javascript","tag-node-js","topic-consejos-tecnologicos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Variables de Entorno: \u00bfQu\u00e9 Son y C\u00f3mo Usarlas?<\/title>\n<meta name=\"description\" content=\"La Base de Conocimientos de Kinsta ayuda a responder preguntas sobre cualquier tema, desde consultas relacionadas con la cuenta y la facturaci\u00f3n, hasta preguntas generales sobre WordPress y soporte t\u00e9cnico.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Variables de Entorno: \u00bfQu\u00e9 Son y C\u00f3mo Usarlas?\" \/>\n<meta property=\"og:description\" content=\"La Base de Conocimientos de Kinsta ayuda a responder preguntas sobre cualquier tema, desde consultas relacionadas con la cuenta y la facturaci\u00f3n, hasta preguntas generales sobre WordPress y soporte t\u00e9cnico.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-11T07:01:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-01T19:32:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/07\/what-is-an-environment-variable.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kumar Harsh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"La Base de Conocimientos de Kinsta ayuda a responder preguntas sobre cualquier tema, desde consultas relacionadas con la cuenta y la facturaci\u00f3n, hasta preguntas generales sobre WordPress y soporte t\u00e9cnico.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/07\/what-is-an-environment-variable.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kumar Harsh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"39 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/\"},\"author\":{\"name\":\"Kumar Harsh\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9\"},\"headline\":\"Variables de Entorno: \u00bfQu\u00e9 Son y C\u00f3mo Usarlas?\",\"datePublished\":\"2022-07-11T07:01:12+00:00\",\"dateModified\":\"2025-10-01T19:32:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/\"},\"wordCount\":7762,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/07\/what-is-an-environment-variable.jpg\",\"keywords\":[\"development\",\"JavaScript\",\"node.js\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/\",\"name\":\"Variables de Entorno: \u00bfQu\u00e9 Son y C\u00f3mo Usarlas?\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/07\/what-is-an-environment-variable.jpg\",\"datePublished\":\"2022-07-11T07:01:12+00:00\",\"dateModified\":\"2025-10-01T19:32:09+00:00\",\"description\":\"La Base de Conocimientos de Kinsta ayuda a responder preguntas sobre cualquier tema, desde consultas relacionadas con la cuenta y la facturaci\u00f3n, hasta preguntas generales sobre WordPress y soporte t\u00e9cnico.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/07\/what-is-an-environment-variable.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/07\/what-is-an-environment-variable.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Consejos Tecnol\u00f3gicos\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/consejos-tecnologicos\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Variables de Entorno: \u00bfQu\u00e9 Son y C\u00f3mo Usarlas?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9\",\"name\":\"Kumar Harsh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g\",\"caption\":\"Kumar Harsh\"},\"description\":\"Kumar is a software developer and a technical author based in India. He specializes in JavaScript and DevOps. You can learn more about his work on his website.\",\"sameAs\":[\"https:\/\/kumarharsh.me\"],\"url\":\"https:\/\/kinsta.com\/es\/blog\/author\/kumarharsh\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Variables de Entorno: \u00bfQu\u00e9 Son y C\u00f3mo Usarlas?","description":"La Base de Conocimientos de Kinsta ayuda a responder preguntas sobre cualquier tema, desde consultas relacionadas con la cuenta y la facturaci\u00f3n, hasta preguntas generales sobre WordPress y soporte t\u00e9cnico.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/","og_locale":"es_ES","og_type":"article","og_title":"Variables de Entorno: \u00bfQu\u00e9 Son y C\u00f3mo Usarlas?","og_description":"La Base de Conocimientos de Kinsta ayuda a responder preguntas sobre cualquier tema, desde consultas relacionadas con la cuenta y la facturaci\u00f3n, hasta preguntas generales sobre WordPress y soporte t\u00e9cnico.","og_url":"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2022-07-11T07:01:12+00:00","article_modified_time":"2025-10-01T19:32:09+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/07\/what-is-an-environment-variable.jpeg","type":"image\/jpeg"}],"author":"Kumar Harsh","twitter_card":"summary_large_image","twitter_description":"La Base de Conocimientos de Kinsta ayuda a responder preguntas sobre cualquier tema, desde consultas relacionadas con la cuenta y la facturaci\u00f3n, hasta preguntas generales sobre WordPress y soporte t\u00e9cnico.","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/07\/what-is-an-environment-variable.jpeg","twitter_creator":"@Kinsta_ES","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Kumar Harsh","Tiempo de lectura":"39 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/"},"author":{"name":"Kumar Harsh","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9"},"headline":"Variables de Entorno: \u00bfQu\u00e9 Son y C\u00f3mo Usarlas?","datePublished":"2022-07-11T07:01:12+00:00","dateModified":"2025-10-01T19:32:09+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/"},"wordCount":7762,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/07\/what-is-an-environment-variable.jpg","keywords":["development","JavaScript","node.js"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/","url":"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/","name":"Variables de Entorno: \u00bfQu\u00e9 Son y C\u00f3mo Usarlas?","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/07\/what-is-an-environment-variable.jpg","datePublished":"2022-07-11T07:01:12+00:00","dateModified":"2025-10-01T19:32:09+00:00","description":"La Base de Conocimientos de Kinsta ayuda a responder preguntas sobre cualquier tema, desde consultas relacionadas con la cuenta y la facturaci\u00f3n, hasta preguntas generales sobre WordPress y soporte t\u00e9cnico.","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/07\/what-is-an-environment-variable.jpg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/07\/what-is-an-environment-variable.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/variables-de-entorno\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"Consejos Tecnol\u00f3gicos","item":"https:\/\/kinsta.com\/es\/secciones\/consejos-tecnologicos\/"},{"@type":"ListItem","position":3,"name":"Variables de Entorno: \u00bfQu\u00e9 Son y C\u00f3mo Usarlas?"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9","name":"Kumar Harsh","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g","caption":"Kumar Harsh"},"description":"Kumar is a software developer and a technical author based in India. He specializes in JavaScript and DevOps. You can learn more about his work on his website.","sameAs":["https:\/\/kumarharsh.me"],"url":"https:\/\/kinsta.com\/es\/blog\/author\/kumarharsh\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/54105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/238"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=54105"}],"version-history":[{"count":13,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/54105\/revisions"}],"predecessor-version":[{"id":56551,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/54105\/revisions\/56551"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/54105\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/54105\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/54105\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/54105\/translations\/fr"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/54105\/translations\/es"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/54105\/translations\/de"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/54105\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/54106"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=54105"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=54105"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=54105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}