为什么我不能将NODE_ENV设置为undefined ?
Why can't I set NODE_ENV to undefined?
我正试图实现一个测试,我的代码在不同的Node.js环境中正确工作,通过改变和测试变量NODE_ENV
的值。
我被困住了,试图理解为什么下面的代码:
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
它非常微妙:根据文档:
在进程上分配属性。Env将隐式地将值转换为字符串。
所以你从process.env.NODE_ENV
得到"undefined"
,而不是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字符串未定义测试字符串未定义process.env。NODE_ENV字符串未定义将envs设置为undefined的解决方法是将所有envs设置为undefined,如下所示:
process.env = {}
或者如vital -t所说,删除这个环境:
delete process.env.NODE_ENV
相关文章:
- 将服务中的函数绑定到$scope(错误:无法设置undefined的属性'onChange')
- 如果我们设置undefined的值会发生什么
- 为什么ajax回调在我的本地变量中设置undefined
- app.render[TypeError:无法设置undefined的属性'content']在Node
- jQuery Tablesorter 错误“未捕获的类型错误:无法设置 undefined 的属性'count&
- Javascript 数组:将条目设置为 undefined
- 类型错误:无法在模块导出中设置 undefined 的属性
- Angularjs 绑定到 JSON 会将值设置为 undefined
- GoogleMaps v3 autocomplete.getBounds()在设置后返回undefined
- Jquery ui slider tabs不能设置undefined属性
- jquery-mobile事件顺序和为什么setTimeout设置$this为undefined
- 为什么我不能将NODE_ENV设置为undefined ?
- Angular不能设置undefined属性
- jQuery .val()在设置后立即产生undefined
- 为什么将复选框'的假值设置为'undefined'导致添加ng-invalid
- jQuery多维数组(动态键)-不能设置属性undefined
- 将Audio对象设置为undefined会导致内存泄漏吗?
- “undefined"不是检查表数组上的函数设置侦听器
- 如何处理'undefined'当我在Javascript中为对象设置方法时,从控制台中返回
- JavaScript 无法设置 undefined 的属性