在Heroku上使用Javascript访问环境变量?

时间:2012-09-21 19:40:06

标签: javascript ruby heroku environment-variables rack

我在Heroku上有一个用于网站的ruby / rack应用程序。该站点使用Javascript,我想访问Javascript文件中的Heroku环境变量(API密钥)。我试过了:

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

但似乎都不起作用。我得到一个没有定义错误的进程。我得到的上述代码行来自在Heroku上运行的Node.js应用程序。我认为从普通的js文件访问密钥的方法是相同的,但它不起作用。

2 个答案:

答案 0 :(得分:3)

你很困惑。 Javascript在访问者的Web浏览器中运行,Heroku上的不是,因此无法读取服务器的环境变量。这是一个常见问题。解决方案是让您的Web应用程序通过Ruby模板提供Javascript,插入公共API密钥。

我写的简单应用程序有一个例子。 https://github.com/hickford/nanoblogger Javascript文件nano.js由Ruby erb模板

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

答案 1 :(得分:1)

process.env内容is part of Node.js,而不是JavaScript的一部分,因此它不会转到您的应用。

您的机架应用程序应该可以访问环境变量,因此,如果您可以将该值传递给JavaScript可访问的内容(不将其暴露给用户/ DOM,如果它是敏感信息)那么这应该有效。

This other answer可能会为您指明一个有用的方向,或者至少澄清您是否可以通过JavaScript实现您的目标。