How can I check if an environment variable is set in Node.js?
This is working fine in my Node.js project:
if(process.env.MYKEY) { console.log('It is set!'); }else { console.log('No set!'); }
EDIT:
Note that, As @Salketer mentioned, depends on the needs, falsy value will be considered as false
in snippet above. In case a falsy value is considered as valid value. Use hasOwnProperty
or checking the value once again inside the block.
> x = {a: ''}{ a: '' }> x.hasOwnProperty('a')true
Or, feel free to use the in operator
if ("MYKEY" in process.env) { console.log('It is set!');} else { console.log('No set!');}
I use this snippet to find out whether the environment variable is set
if ('DEBUG' in process.env) { console.log("Env var is set:", process.env.DEBUG)} else { console.log("Env var IS NOT SET")}
Theoretical Notes
As mentioned in the NodeJS 8 docs:
The
process.env
property returns an object containing the user environment. See environ(7).[...]
Assigning a property on
process.env
will implicitly convert the value to a string.
process.env.test = null console.log(process.env.test); // => 'null' process.env.test = undefined; console.log(process.env.test); // => 'undefined'
Though, when the variable isn't set in the environment, the appropriate key is not present in the process.env
object at all and the corresponding property of the process.env
is undefined
.
Here is another one example (be aware of quotes used in the example):
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-variableprocess.env.asdf = undefinedconsole.log(process.env.asdf)// => 'undefined'process.env.asdf = 123console.log(process.env.asdf)// => '123'
A side-note about the code style
I moved this awkward and weird part of the answer away from StackOverflow: it is here
Why not check whether the key exists in the environment variables?
if ('MYKEY' in Object.keys(process.env)) console.log("It is set!");else console.log("Not set!");