为什么我不能将NODE_ENV设置为undefined?
我试图通过改变和testingvariablesNODE_ENV
的值来实现一个testing,让我的代码在不同的Node.js环境中正常工作。
我所坚持的是,试图理解为什么下面的代码:
process.env.NODE_ENV = undefined; var test = process.env.NODE_ENV || 'empty'; console.log(test);
输出undefined
而不是empty
。
这是一些JavaScript或Node.jsfunction,我在这里失踪?
在Node.js版本下testing:0.10.47,4.6.1和6.9.1
更新
作为这个具体情况的解决办法,我不得不做以下几点:
delete process.env.NODE_ENV; // now it is undefined
这是非常微妙的:根据文件 :
在process.env上分配一个属性会隐式地把值转换成一个string。
所以你从process.env.NODE_ENV
回来"undefined"
,而不是undefined
。 "undefined"
是truthy,所以"undefined" || "empty"
"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_ENVstring未定义 testingstring未定义 process.env.NODE_ENVstring未定义