如何在Node.js中取消设置环境变量?
我试过了:
process.env.MYVAR = undefined
但这并没有推翻它,它看起来如下所示:
console.log('xx' + process.env.MYVAR + 'xx');
输出为:
Xxxunfinedxx
我想:
XXXX
我怎么才能做到这一点?
bakd9h0s1#
它还有另一个不直观的方面:Node.js在为环境变量赋值时将undefined转换为字符串“unfined”:
undefined
> process.env.MYVAR = undefined undefined > typeof process.env.MYVAR 'string'
您可以使用delete解决此问题:
delete
> delete process.env.MYVAR true > typeof process.env.MYVAR 'undefined'
使用Node.js 10.18、12.14、13.5和16.15进行了测试。
因此,(process.env.MYVAR || '')不起作用,因为它的计算结果为('undefined' || '')。
(process.env.MYVAR || '')
('undefined' || '')
ldxq2e6h2#
问题是:
实际上是不正确的。未定义属性的值为undefined。只要属性值相同,process.env.MYVAR = undefined就与delete process.env.MYVAR相同。但是属性也有delete删除的存在,因为密钥不会显示在Object.keys返回的Array中。
delete process.env.MYVAR
Object.keys
Array
如果需要空字符串,则必须编写:
console.log('xx' + (process.env.MYVAR || '') + 'xx');
k2fxgqgv3#
确保您了解undefined !== ""
undefined !== ""
如果需要空字符串,请使用:process.env.MYVAR = ""。未定义意味着那里什么都没有。空字符串表示没有任何内容的文本,使其易于理解。
process.env.MYVAR = ""
3条答案
按热度按时间bakd9h0s1#
它还有另一个不直观的方面:Node.js在为环境变量赋值时将
undefined
转换为字符串“unfined”:您可以使用
delete
解决此问题:使用Node.js 10.18、12.14、13.5和16.15进行了测试。
因此,
(process.env.MYVAR || '')
不起作用,因为它的计算结果为('undefined' || '')
。ldxq2e6h2#
问题是:
实际上是不正确的。未定义属性的值为
undefined
。只要属性值相同,process.env.MYVAR = undefined
就与delete process.env.MYVAR
相同。但是属性也有delete
删除的存在,因为密钥不会显示在Object.keys
返回的Array
中。如果需要空字符串,则必须编写:
k2fxgqgv3#
确保您了解
undefined !== ""
如果需要空字符串,请使用:
process.env.MYVAR = ""
。未定义意味着那里什么都没有。空字符串表示没有任何内容的文本,使其易于理解。