3

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

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

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

4

2 回答 2

3

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

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

var pusher = new Pusher( '<%= Pusher.key %>'); 
于 2012-09-21T19:59:36.917 回答
1

这些process.env东西是 Node.js 的一部分,而不是 JavaScript 的一部分,所以它不会出现在你的应用程序中。

但是,您的机架应用程序应该可以访问环境变量,因此如果您可以将该值传递给您的 JavaScript 可以访问的东西(如果它是敏感信息,则不会将其暴露给用户/DOM),那么它应该可以工作。

这个其他答案可能会为您指明一个有用的方向,或者至少澄清您尝试做的事情是否可以通过 JavaScript 实现。

于 2012-09-21T19:48:34.190 回答