【发布时间】:2015-10-07 18:11:00
【问题描述】:
是否可以从 angularjs 访问 ENV 变量?
我有一个 Angular 1.2.8 应用程序正在通过 Brunch.io 编译
它在 heroku 上作为基本节点应用程序托管。 (我在本地编译;然后推送)
我在 ENV 变量的编译阶段阅读了一些关于令牌替换的内容。
但是,我更希望能够将代码推送到几个不同的服务器,并让它仅使用 ENV 变量解析正确的本地设置。
谢谢!
【问题讨论】:
是否可以从 angularjs 访问 ENV 变量?
我有一个 Angular 1.2.8 应用程序正在通过 Brunch.io 编译
它在 heroku 上作为基本节点应用程序托管。 (我在本地编译;然后推送)
我在 ENV 变量的编译阶段阅读了一些关于令牌替换的内容。
但是,我更希望能够将代码推送到几个不同的服务器,并让它仅使用 ENV 变量解析正确的本地设置。
谢谢!
【问题讨论】:
您无法在浏览器上获取 ENV 变量。您可以向服务器上的 rest 服务发送请求,并在后端获取 env,然后响应回客户端
快速示例:(Express.js)
app.get("/rest/getenv", function(req, res) {
var env = process.env.ENV_VARIABLE;
res.json({result: env});
});
编辑:
您需要使用类似字符串的令牌来保护这个休息网址。否则,任何人都可以访问该 url 并获取您的环境变量值。这可能是安全问题
【讨论】:
有多种方法可以做到这一点,如上所述,您可以简单地进行 API 调用,但这会在您的应用中造成不必要的延迟。 我建议将您的环境变量注入服务器上的角度常量服务。这可能听起来有点令人困惑,但它比听起来更简单。
我写了一篇博文,比较了将 env varialbes 注入 Angular 的不同方法,并解释了为什么应该采用这种方法:https://medium.com/@kudresov/a-better-way-to-inject-environmental-variables-in-angular-d3b2d01a3c5e
我还创建了示例 Node Angular 项目来展示它是如何工作的:https://github.com/kudresov/angular-config-vars
【讨论】: