2014-01-14 28 views
6

可以從angularjs訪問ENV變量嗎?如何訪問角度js中的局部ENV變量

我有一個角1.2.8應用程序正在通過Brunch.io

編譯它作爲託管在Heroku上基本節點的應用程序。 (我在本地編譯;然後推)

我已經在ENV變量的編譯階段讀過一些關於令牌替換的東西。

但我更願意將代碼推送到幾個不同的服務器,並使用ENV變量解決正確的本地設置。

謝謝!

回答

10

您無法在瀏覽器上獲得ENV變量。您可以在後臺發送請求到REST服務的服務器上,並獲得ENV,然後響應返回給客戶端

簡單的例子:(Express.js)

app.get("/rest/getenv", function(req, res) { 
    var env = process.env.ENV_VARIABLE; 
    res.json({result: env}); 
}); 

編輯:

您需要使用類似字符串的標記來保護這個剩餘網址。否則,任何人都可以訪問該網址並獲取您的環境變量值。這可能是安全問題

+0

謝謝我,我很困惑。我需要ENV變量,所以我知道將前端指向後端的位置。不過,我可以讓「前端」有一個基本的休息電話。謝天謝地,這絕對不是安全問題。 –

8

有多種方式可以做到這一點,如上所述,您可以簡單地進行API調用,但是這會在您的應用程序中造成不必要的延遲。 我會建議將您的env變量注入到您的服務器上的角度常量服務中。這可能聽起來有點令人困惑,但它比聽起來簡單。

我已經寫了一篇博客文章比較注射ENV不同的方式varialbes成角並解釋爲什麼你應該採取這種做法:https://medium.com/@kudresov/a-better-way-to-inject-environmental-variables-in-angular-d3b2d01a3c5e

而且我已經創建的樣本節點角項目,以展示它是如何工作的:https://github.com/kudresov/angular-config-vars

+0

偉大的博客文章感謝 – timhc22