为什么不能检查环境变量是否未定义?

时间:2019-08-16 22:18:23

标签: javascript node.js typescript

此测试正在打印fine!!!!。为什么不打印出UNDEFINED!!!!

describe('process test', () => {
    require('dotenv').config()

    it('will make a call from the athena library to get data', async () => {
        process.env["FOO"] = undefined

        const foo: string | undefined = process.env["FOO"]

        if (foo === undefined) {
            console.log('UNDEFINED!!!!')
        } else {
            console.log('fine!!!!')
        }
    })
})

1 个答案:

答案 0 :(得分:7)

documenation

  

在process.env上分配属性会将该值隐式转换为字符串。

process.env.test = null;
console.log(process.env.test);
// => 'null'
process.env.test = undefined;
console.log(process.env.test);
// => 'undefined'

这是可以预料的,因为实际上环境只能存储字符串。 文档再次指出,分配undefined不会删除环境变量

  

使用delete从process.env中删除属性。

process.env.TEST = 1;
delete process.env.TEST;
console.log(process.env.TEST);
// => undefined