2013-04-11 50 views
1

我設定明確的變量如下:+的NodeJS ExpressJS - 無法讀取環境變量

app.set('HOST', 'demo.sample.com'); 

但是,如果我嘗試讀取這個變量,我得到undefined作爲輸出。我正在使用process.env.HOST來讀取變量。但是,如果我嘗試使用app.get('HOST'), I get the correct value - how do I get the value using process.env.HOST`讀取它?

我不能使用`app.get('HOST'),因爲我正在讀取另一個文件中的變量 - 一個不包含對快速應用變量的引用的文件。

問候, 大額牛

回答

3

app.set()不設置環境變量,它只是Express提供的一種便捷方法,可以一起使用與app.get()

如果你想在你的JS代碼來設置環境變量,使用:

process.env.HOST = 'demo.sample.com'; 
+0

那麼你的意思是說'app.set'和'process.env'不能相互作用嗎? – user109187 2013-04-11 08:20:58

+1

這是正確的。 – robertklep 2013-04-11 08:21:17

+0

哦,我跳過那部分。那麼,不要理會我的答案。 process.env與Express無關,它讀取系統變量。 – Zlatko 2013-04-11 08:57:39

0

更新:process.env只讀取操作系統環境設置。要設置express vars,請使用app.get()和app.set(),就像在其他答案中一樣。

您的HOST變量是否設置爲?它通常設置爲HOSTNAME。

[[email protected] ~]$ node 
> process.env.HOST 
undefined 
> process.env.HOSTNAME 
'droplet.zlayer.net' 
> 

你可以在Bash中手動設置(我假設你使用bash),但:

[[email protected] ~]$ export HOST=$HOSTNAME 
[[email protected] ~]$ node 
> process.env.HOST 
'droplet.zlayer.net' 

>

匯出行可能是文字,即:

export HOSTNAME=myhostname.myserver.com 
+0

實際上,這裏的'host'只是一個例子。我還有其他一些特定於我的項目的變量,它們也沒有設置。所以主機名或主機名無關緊要。 – user109187 2013-04-11 08:19:26

0

如果你是在Linux上,您將需要設置環境變量在bash /爲了外殼 到從APP中調用它。 嘗試使用export NODE_ENV ='production'或'development'設置環境變量,然後使用app.configure'production',() - >配置您的應用程序,然後再試一次