¿Por qué no debería usar dotenv en modo de producción?
Vi el siguiente código en algunos sitios web. Pero no entendí por qué están haciendo esta verificación de condición.
if (process.env.NODE_ENV !== 'production') { require('dotenv').config(); } console.log('Bla is :', process.env.Bla);(*)supongamos que la salida de la línea (*) en modo no producción es-> Bla es: Bla
¿Cuál es la salida de la línea (*) si NODE_ENV es producción? (Según mi conocimiento, creo que será undefined )
Porque en producción, es posible que desee configurar las variables de entorno directamente en su máquina virtual, ya que es posible que no tenga acceso ssh y no pueda enviar el archivo .env a su control de versión. En mi caso, estoy usando el nivel gratuito de heroku y no puedo usar ssh para crear un archivo .env. Así que configuré mis variables de entorno manualmente en la configuración de Config Vars.
Complementando las otras respuestas, también crearía un problema de seguridad. Estaría versionando (comprometiéndose con git) información como conexiones de bases de datos, tokens y contraseñas. En este caso, todos los que accedan al código podrían conectarse a los recursos de producción.
Para resolver esto, en producción, crea las variables env directamente en la instancia en la que está ejecutando el código.
La idea detrás de esto es que dotenv generalmente se usa en una estación de trabajo de desarrollador. Es una forma de usar un archivo plano (generalmente llamado ".env") para anular los archivos de entorno. La razón por la que no lo usa en producción es que en producción normalmente estaría ejecutando la aplicación en un contenedor docker o en un servidor dedicado, cualquiera de los cuales no necesitaría preocuparse por establecer variables de entorno en conflicto.
Para responder a la pregunta real, la salida para esa línea en este caso sería lo que sea que esté configurada la variable de entorno local. Si no está configurado, simplemente sería undefined .