首页 > 解决方案 > 在运行时更改角度环境变量

问题描述

我希望能够更改我的 Angular 在构建时从服务器获取资源的 url。我会在构建过程中传递一个参数来更改 url 值背后的原因是为了部署在不同的 docker 容器中。

环境.docker.ts

export const environment = {
  ...
  url: "localhost:8080"
};

我想要类似 : 的东西ng build --env docker --url:"localhost:9090",它将在构建时更新默认值。

标签: angularnpmangular-cli

解决方案


创建环境文件environment.prod.ts

export const environment = {
  production: true,
  apiUrl: '$BACKEND_URL'
};

运行ng build --prod true

现在在运行之前,替换所有生成的 html 文件中的变量:

cd dist;
find . -type f -exec sed -i 's~\$BACKEND_URL~https://mybackend.domain.com~g' {} \;

然后,您可以在运行之前运行此替换命令,例如在运行时运行 docker 容器之前

PS:您只能在它替换“就地”变量后运行该命令,如果需要,请制作 dist 的备份副本。


推荐阅读