Angular中的OS环境变量

时间:2018-07-05 12:25:12

标签: javascript angular typescript docker environment-variables

我知道Angular中的environment.ts文件,但最终我将敏感数据提交到git repo。在Java中,我只能引用可以在服务器上设置的OS环境变量。

在我们公司中,CI码头工人将所有应用程序都推送到OpenShift中,这意味着我无权访问文件系统,因此我不能只是手动放置生产环境。

有人知道如何获取OS环境变量吗?

2 个答案:

答案 0 :(得分:1)

如果要将角度应用程序与Webpack捆绑在一起,则可以使用webpack.DefinePlugin

plugins: [
    new webpack.DefinePlugin({
        "some_variable": JSON.stringify(process.env.SOME_ENV_VAR || "my_default_value")
    })
]

然后,您可以在角度应用程序中引用“ some_variable”。您可以在typings.d.ts文件中声明它们,以便识别它们。

declare const some_variable: string

您始终可以拥有一个可以通过api调用为您提供这些变量的Web服务。

答案 1 :(得分:1)

  1. 具有提供该配置的API,并从angular中检索该

    app.get("/api/config/default", function(req, res) {
      res.send({
       a: process.env["A_VAR"]
      });
    })
    
  2. 让后端生成角度常数

    app.get("/generated-config.js", function(req, res) {
      res.send(
        "angular.module('myApp').constant('MY_CONFIG',"
         + "{'a': \"" + process.env["A_VAR"] + "\""
         + "})"
       );
    });
    

    您可以为此使用ng-constant。 我更好地喜欢这种方法,因为阻止依赖此配置的角度控制器和服务变得非常容易。就我而言,后端会生成此文件,并将其与其余的静态文件一起提供。