2012-09-21 26 views
3

我在Heroku服務網站紅寶石/機架應用。該網站使用Javascript,我想訪問JavaScript文件(API密鑰)中的Heroku環境變量。我試過了:在Heroku的Javascript中訪問環境變量?

process.env.API_KEY 
// As well as: 
process.env['API_KEY'] 

但似乎都沒有工作。我得到一個進程沒有定義的錯誤。上述代碼行來自Heroku上運行的Node.js應用程序。我認爲這是從一個正常的js文件訪問密鑰的相同方式,但它不起作用。

回答

1

process.env東西is part of Node.js,而不是JavaScript的一部分,所以它不會去你的應用程序。

但是,您的機架應用程序應該有權訪問環境變量,因此如果您可以將該值傳遞給您的JavaScript可訪問的內容(而不將其公開給用戶/ DOM,如果它是敏感信息),那麼應該可以。

This other answer可能指向你在一個有用的方向,或至少澄清,如果你想做什麼從JavaScript是可能的。

3

你困惑。 JavaScript是在訪問者網絡瀏覽器運行,在Heroku上不,所以不能讀取服務器的環境變量。這是一個常見問題。解決方案是讓您的Web應用程序通過Ruby模板提供Javascript,並插入公共API密鑰。

簡單的應用程序我寫了一個例子。 https://github.com/hickford/nanoblogger Javascript文件nano.js由Ruby erb模板渲染

var pusher = new Pusher('<%= Pusher.key %>');