【问题标题】:Environment Variables in Angular2Angular2 中的环境变量
【发布时间】:2017-11-07 17:14:05
【问题描述】:

所以我有一个 Angular 2/4 应用程序,有一个节点 server.js 来服务它。我想访问一个环境变量(后端端点是 localhost 用于开发,另一个端点用于生产)。如果重要的话,这个应用程序(以及后端应用程序)将被部署到 Heroku。

我已尝试找到解决方案,但我发现的所有内容似乎都导致使用多个 environment.ts 文件(每个配置 1 个),然后根据 ng build 标志 --env 在它们之间进行交换。但我对这个解决方案感到担忧,因为它似乎混合了配置和源代码。我还想避免(如果可能)在端点/配置更改时重新构建/重新部署。

在 Spring Boot 中,我习惯于在属性文件中使用像 ${PORT:8080} 这样的配置。虽然我过去也创建了多个 .properties 文件,但我知道有时这样做更简单/更干净。

在节点中,我习惯于做像process.env.PORT || 8080 这样的环境变量。由于我的角度应用程序由节点 server.js 提供服务,我认为我应该能够做类似的事情。但是当我尝试在我的environments/environment.ts 文件中使用process.env 时,我收到错误Cannot find name 'process'.

所以我的问题本质上是,如果我需要创建多个 environment 属性文件,或者是否有替代方案。

谢谢

【问题讨论】:

标签: node.js angular environment-variables


【解决方案1】:

无论您的配置是存储在环境变量中还是服务器上的配置文件中,您基本上都有两种选择。您的客户端代码需要它,因此您需要将其作为资产包的一部分提供,或者您必须将其作为单独的请求获取。那个单独的请求可以是一个 Ajax 调用,或者只是一个 js 文件,它与包的其余部分分开提供。

我认为理想情况下,客户端上的生产应用程序和非生产应用程序之间的唯一区别应该是数据、捆绑密度(例如,在开发中你不希望你的东西被缩小)以及它是从哪个 url 提供的。其他所有内容都应该可以从源 URL imo 中发现

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-11
    • 2014-09-30
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 2020-12-07
    相关资源
    最近更新 更多