我正在开发一项功能,我将为 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 进行了构建。
我想我找到你了!
当您使用: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;
}
}
这就是为什么你总是会进入其他条件。