2012-09-03 30 views
7

我正在訪問NODE_ENV環境變量來打開node.js服務器中的一些調試功能。它曾經像魅力一樣工作,但現在我面對一些非常奇怪的東西。下面是我在做什麼:無法正確訪問NODE_ENV環境變量,這是node.js的錯誤嗎?

// check if the env var is OK 
console.log(process.env.NODE_ENV); 

// WTF??? 
if (process.env.NODE_ENV == "development") { 
    console.log("ok"); 
} 
else { 
    console.log("nope"); 
} 

// sanity check 
var str = "development"; 
if (str == "development") { 
    console.log("ok"); 
} 
else { 
    console.log("nope"); 
} 

,這裏是我所得到的:

development 
nope 
ok 

這怎麼可能?我是否面臨node.js中的錯誤?如果不是,我做錯了什麼?

編輯

按照下面尖的評論,這裏就是我得到如果我改變了最初的日誌console.log("[" + process.env.NODE_ENV + "]");

]development 
nope 
ok 

於是,一個已知的問題可能?

+2

它改爲'的console.log( 「[」 + process.env.NODE_ENV + 「]」);',看看是否有尾隨空格也許 – Pointy

+0

@Pointy完成,看我的編輯。所以。啓發我:) –

+2

啊 - 好吧,它看起來好像你的環境變量確實有一些有趣的人物 - 最終可能回車? – Pointy

回答

10

看起來你的環境變量有一些有趣的字符,可能是由於它被設置在Node.js之外。你可以試試這個:

if (process.env.NODE_ENV.replace(/\W/g, '') == 'development') { 
    console.log('ok'); 
} 
+1

是的,你是對的!我使用Windows行結尾的腳本設置變量,如果我直接在bash中設置它,問題就會消失!好的,謝謝! –