[英]Why can't I set NODE_ENV to undefined?
我正在嘗試通過更改和測試變量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
這是非常微妙的:根據文檔:
在 process.env 上分配屬性會將值隱式轉換為字符串。
所以你從process.env.NODE_ENV
返回"undefined"
,而不是undefined
。 "undefined"
是真實的,所以"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_ENV string undefined test string undefined process.env.NODE_ENV string undefined
使 envs 為 undefined 的解決方法是將所有 envs 設置為 undefined ,如下所示:
process.env = {}
或者正如vitally-t所說,刪除這個環境:
delete process.env.NODE_ENV
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.