在Angular4 CLI中阅读Azure应用程序设置

时间:2017-09-08 07:36:08

标签: node.js angular azure azure-web-sites

我有一个部署在Azure上的Angular4 Web应用程序。现在我想将此应用程序部署到Azure上的其他环境:一个用于测试,一个用于接受,一个用于生产。每个环境都有不同的API端点,可能还有其他变量,例如Application Insights。所有这些环境都在生产模式下运行Angular。

Angular建议您这样做的方式是Enviroment文件(environment.test.ts,enviroment.acc.ts,environment.prod.ts)。我可以在这些文件中配置所有不同的API端点,并使用--prod运行我的构建以进行生产。

但这不是我想要这样做的方式。我想使用部署完全相同的应用程序包来测试我的接受环境,而无需重建项目。在Visual Studio Online中,配置起来也非常简单。

重点是:如何以这种方式使每个环境的API端点不同?

我想要这样做的方式是Azure中的App Settings。但Angular无法访问这些环境变量,因为它在客户端运行。 Node.js正在服务器端运行并且可以获得那些应用程序设置 - 但如果这是我需要的方式,我如何使Node.js(在Angular4 CLI中使用)将这些服务器变量发送到客户端?对此解决方案的性能影响如何?

您是如何为Azure上的Angular4应用修复此问题的?是否无法使用Azure应用程序设置解决此问题?

2 个答案:

答案 0 :(得分:1)

对于每个有相同问题的人:我没有像上面描述的那样解决这个问题。

最后,我按照Angular希望你这样做的方式做到了:所以重建dev,重建acc,重建prod。 在Visual Studio Online中,在构建时,它构建并测试我们的代码,并保存未编译/未编译的代码。在发布时,它再次构建en测试并使用正确的环境变量(例如--prod)将其发布到正确的环境中。

我认为没有其他方法可以解决这个问题。

答案 1 :(得分:0)

解决方案很老,但是行得通!尽管您可以为此目的使用分支或标记,而不是将代码克隆到包中。 如您所说,最好的解决方案是将Azure应用程序设置保存为环境变量,因此您应使用node.js实现API并共享所需的变量。 当然,由于额外的http调用会产生影响,但是在应用程序启动时只有一次,最长大约5毫秒,并且取决于每个程序策略是否产生影响。 另一个选择是将变量移至资产文件夹中的JSON文件,并在部署运行时使用发布管道对其进行更改。这样做更容易实现,但是缺点是您将不得不使用发布变量而不是应用程序设置,并且如果您进行了配置更改,则必须先更新变量值并重新部署它,尽管多数情况下都可以,但是有时您想要更改就像连接字符串一样,您将不得不重新部署。