Me gustaría verificar si una variable de entorno está configurada en mi servidor Express JS y realizar diferentes operaciones dependiendo de si está configurada o no.
He intentado esto:
if(process.env.MYKEY !== 'undefined'){ console.log('It is set!'); } else { console.log('No set!'); } Estoy probando sin el process.env.MYKEY pero la consola imprime "Está configurado".
Esto funciona bien en mi proyecto Node.js:
if(process.env.MYKEY) { console.log('It is set!'); } else { console.log('No set!'); }EDITAR:
Tenga en cuenta que, como mencionó @Salketer, depende de las necesidades, el valor falso se considerará false en el fragmento anterior. En caso de que un valor falso se considere como valor válido. Use hasOwnProperty o verifique el valor una vez más dentro del bloque.
> x = {a: ''} { a: '' } > x.hasOwnProperty('a') trueO siéntase libre de usar el operador in
if ("MYKEY" in process.env) { console.log('It is set!'); } else { console.log('No set!'); }Uso este fragmento para averiguar si la variable de entorno está configurada.
if ('DEBUG' in process.env) { console.log("Env var is set:", process.env.DEBUG) } else { console.log("Env var IS NOT SET") }Como se menciona en los documentos de NodeJS 8 :
La propiedad
process.envdevuelve un objeto que contiene el entorno del usuario. Ver entorno(7) .[...]
Asignar una propiedad en
process.envconvertirá implícitamente el valor en una cadena.process.env.test = null console.log(process.env.test); // => 'null' process.env.test = undefined; console.log(process.env.test); // => 'undefined'
Sin embargo, cuando la variable no está configurada en el entorno, la clave adecuada no está presente en absoluto en el objeto process.env y la propiedad correspondiente de process.env no está undefined .
Aquí hay otro ejemplo (tenga en cuenta las comillas utilizadas en el ejemplo):
console.log(process.env.asdf, typeof process.env.asdf) // => undefined 'undefined' console.log('asdf' in process.env) // => false // after touching (getting the value) the undefined var // is still not present: console.log(process.env.asdf) // => undefined // let's set the value of the env-variable process.env.asdf = undefined console.log(process.env.asdf) // => 'undefined' process.env.asdf = 123 console.log(process.env.asdf) // => '123'Moví esta parte incómoda y extraña de la respuesta lejos de StackOverflow: está aquí
¿Por qué no verificar si la clave existe en las variables de entorno?
if ('MYKEY' in Object.keys(process.env)) console.log("It is set!"); else console.log("Not set!");