所以我有一个有角度的2/4应用程序,有一个节点server.js
来提供它。我想访问一个环境变量(dev的后端端点为localhost
,prod为另一个端点)。如果重要,这个应用程序(以及后端应用程序)将被部署到Heroku。
我已经尝试过找到解决方案,但我找到的所有内容似乎都会导致使用多个environment.ts
文件(每个配置1个),然后根据ng build
标记交换它们{ {1}}。但我对此解决方案感到担心,因为它似乎混合了配置和源代码。我还希望避免(如果可能的话)在端点/配置发生变化时重新构建/重新部署。
在Spring Boot中,我常常在属性文件中使用--env
之类的配置。虽然我过去也创建了多个${PORT:8080}
文件,所以我知道有时候这样做会更简单/更清晰。
在节点中,我常常使用.properties
之类的env变量。由于我的角度应用程序由节点server.js提供服务,我认为我应该能够做类似的事情。但是当我尝试在process.env.PORT || 8080
文件中使用process.env
时,我收到错误environments/environment.ts
所以我的问题基本上是,如果我需要创建多个Cannot find name 'process'.
属性文件,或者是否有替代方案。
由于
答案 0 :(得分:0)
无论您的配置是存储在环境变量中还是存储在服务器上的配置文件中,您基本上都有两种选择。您的客户端代码需要它,因此您需要将其作为资产包的一部分提供,或者您必须将其作为单独的请求获取。这个单独的请求可能是一个Ajax调用,也可能只是一个与bundle的其余部分分开提供的js文件。
我认为理想情况下,客户端上的生产应用程序和非生产应用程序之间的唯一区别应该是数据,捆绑密度(例如,您不希望缩小您的内容)以及它所提供的URL。其他所有内容都应该从源URL,imo
中找到