我正在开发一个部署在Firebase上的Angular应用程序。
我对处理必须部署在两个不同环境(DEV和PROD(上的同一应用程序的明智策略有以下疑问,这两个环境基本上是两个不同的Firebase项目,与两个不同帐户相关。
我的应用程序执行一些由Firebase Cloud Function实现的API调用。我的问题是,如果有两个不同的环境,与我的Firebase云函数实现的API相关的端点将发生变化。
目前,我的应用程序在DEV环境中运行良好,这些API端点被硬编码到我的代码中。类似这样的东西:
this.apiCallUrl = "https://MY-PROJECT-NAME.cloudfunctions.net/newUserSignUp?userUID=" + userCredential.user.uid;
然后我在我的Angular代码中调用API执行HTTPGET请求:
this.http.get<any>(this.apiCallUrl).subscribe((result) => {
console.log("DISABBLING STATUS USER: ", result);
});
它运行良好,但再次部署到另一个项目中非常尴尬,因为我必须手动将所有端点更改到我的应用程序中,然后在PROD环境中再次部署(这意味着我需要有两个不同的项目:一个用于DEV环境,另一个用于PROD环境(。
什么是应对这种情况的明智解决方案?
我不知道这是否可能:Firebase允许使用其名称检索API(实现的谷歌云功能(的enpoint?(它不会改变(。或者其他可能的聪明方法来解决这个问题?
将其作为社区Wiki发布,因为它是基于评论的。
您可以尝试使用Angular中可用的环境变量为PROD和DEV设置不同的API端点。正如本文中所阐明的,通过在Angular上使用多个环境,您可以拥有不同的环境变量,其中每个环境变量都可以有自己的端点名称。
您可以在官方的Angular API中获得非常好的代码示例。除此之外,您还可以查看本文中与在多个环境中部署应用程序相关的其他文章,而无需一直重新构建它们。