Angular 13 是否可以在具有不同 apiURL 的不同域中部署构建,而无需重建应用程序?

问题描述 投票:0回答:1

我正在开发一项功能,我将为 DEV 环境进行构建并部署在 DEV 域上。此外,在不为 QC 环境再次重建应用程序的情况下,我想利用 DEV 构建并在 QC 环境上部署相同的构建,并使用环境文件中提到的不同 apiurl。

第 1 步:- 制作 2 个环境文件:- 1 个用于 dev api url,第 2 个用于 qcapiurl。

第2步:-制作environmentService.ts文件,代码如下:-

export class EnvironmentService {

  private currentEnvironment: any;

 

  constructor() {

    // Determine the current domain or environment and load the appropriate config

    const currentDomain = window.location.hostname;

 

    if (currentDomain === 'https://devums.sahibandhu.com') {

      this.currentEnvironment = environmentDev.baseUrlDev;

    }

    else if (currentDomain === 'https://qcums.sahibandhu.com') {

      this.currentEnvironment = environmentQc.baseUrlDev;

    }

    else if (currentDomain === 'https://uatums.sahibandhu.com') {

      this.currentEnvironment = environmentUat.baseUrlDev;

    }

    else if (currentDomain === 'https://ums.sahibandhu.com') {

      this.currentEnvironment = environmentProd.baseUrlDev;

    }

    else {

      // Default to a specific environment if none matches

      this.currentEnvironment = environmentDev.baseUrlDev;

      console.log(this.currentEnvironment);

    }

  }

 

  getConfig() {

    return this.currentEnvironment;

  }

}

第 3 步:- 在 appmodule.ts 文件中将此服务文件注册为

export function initializeApp(environmentService: EnvironmentService) {

  return () => environmentService.getConfig();

}

第 4 步:- 在 api 调用期间获取当前环境变量。

我期望当我在 QC 环境上部署开发版本时,它应该自动采用 qcums.sahibandhu.com 域。但在 qc 和 dev anv 上,它采用相同的 apiurl,即 devums.sahibandhu.com,因为我已经使用 devums.sahibandhu.com 进行了构建。

angular typescript dynamic-programming
1个回答
0
投票

我想我找到你了!

当您使用:window.location.hostname时

此属性将返回 URL 的 DOMAIN。

在您的情况下将返回:

对于开发者:devums.sahibandhu.com 对于质量控制:qcums.sahibandhu.com 等等。

您需要根据此修改您的 if 。下一个例子:

const currentDomain = window.location.hostname;



if (currentDomain === 'devums.sahibandhu.com') {

  this.currentEnvironment = environmentDev.baseUrlDev;

}

else if (currentDomain === 'qcums.sahibandhu.com') {

  this.currentEnvironment = environmentQc.baseUrlDev;

}

else if (currentDomain === 'uatums.sahibandhu.com') {

  this.currentEnvironment = environmentUat.baseUrlDev;

}

else if (currentDomain === 'ums.sahibandhu.com') {

  this.currentEnvironment = environmentProd.baseUrlDev;

}

else {

  // Default to a specific environment if none matches

  this.currentEnvironment = environmentDev.baseUrlDev;

}
}

这就是为什么你总是会进入其他条件。

© www.soinside.com 2019 - 2024. All rights reserved.