为什么我不能将NODE_ENV设置为undefined?

时间:2016-10-23 14:14:01

标签: javascript node.js

我正在尝试通过更改和测试变量NODE_ENV的值来实现我的代码在不同Node.js环境中正常工作的测试。

我坚持的是,试图理解为什么以下代码:

process.env.NODE_ENV = undefined;

var test = process.env.NODE_ENV || 'empty';

console.log(test);

输出undefined而不是empty

这是我在这里缺少的一些JavaScript或Node.js功能吗?

在Node.js版本下测试:0.10.47,4.6.1和6.9.1

更新

作为这个具体案例的解决方法,我必须做以下事情:

delete process.env.NODE_ENV; // now it is undefined

2 个答案:

答案 0 :(得分:49)

非常微妙:根据the documentation

  

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

所以你从"undefined"而不是process.env.NODE_ENV回来undefined"undefined"是真实的,因此"undefined" || "empty""undefined"

您可以看到,如果您稍微修改一下脚本:

'use strict';

process.env.NODE_ENV = undefined;

console.log("process.env.NODE_ENV", typeof process.env.NODE_ENV, process.env.NODE_ENV);
var test = process.env.NODE_ENV || 'empty';

console.log("test", typeof test, test);
console.log("process.env.NODE_ENV", typeof process.env.NODE_ENV, process.env.NODE_ENV);

......输出:

process.env.NODE_ENV string undefined
test string undefined
process.env.NODE_ENV string undefined

答案 1 :(得分:0)

使 envs 为 undefined 的解决方法是将所有 envs 设置为 undefined 如下:

process.env = {}

或者如vitaly-t所说,删除这个环境:

delete process.env.NODE_ENV