簡體   English   中英

為什么我不能將 NODE_ENV 設置為 undefined?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM