0

i have problem with ternary operator comparsion in node js script. I have

function zip(fileName) {...}
process.env.TESTING = false;
zip(`${file}_${process.env.TESTING ? 'dev' : 'prod'}.zip`)

But fileName always file_dev.zip regardless of process.env.TESTING value

console.log(process.env.TESTING); // false
console.log(process.env.TESTING ? 'dev' : 'prod'); // always 'dev'

Why value is boolean false but comparsion result always true?

But browser console works as expected

Andrew
  • 321
  • 2
  • 11

2 Answers2

3
  process.env.VARIABLE

Always stores value as string so false will be 'false' and not boolean false.

process.env.VARIABLE === 'false'? 'prod':'dev'
kailash yogeshwar
  • 836
  • 1
  • 9
  • 26
2

If this value comes from the environment, won't its value be the string 'false'? Can you confirm with console.log(typeof process.env.TESTING) that it's a boolean?

If it turns out to be a string, you should rewrite the comparison as process.env.TESTING == 'false' ? 'prod' : 'dev'

Botje
  • 26,269
  • 3
  • 31
  • 41