gpt4 book ai didi

angular - 在客户端 Angular 应用程序中访问动态生成的服务器端环境变量

转载 作者:行者123 更新时间:2023-12-01 23:14:02 25 4
gpt4 key购买 nike

我正在使用 Heroku 管道工作流程,该工作流程使用动态生成的 URL 来部署审核应用程序。例如,假设我的生产应用程序部署在 mykickassapp.herokuapp.com,每次我在存储库中创建 PR 时,Heroku 都会自动将该 PR 部署在 mykickassapp-pr-50.herokuapp.com 等位置。

在我的客户端代码中,我使用环境文件并将我的应用程序 URL 存储在其中,在上面的示例中:mykickassapp.herokuapp.com。问题是,它显然不适用于部署在不同动态生成的 URL 的审核应用程序。值得庆幸的是,Heroku 将应用程序的 URL 存储在环境变量中。但问题是如何将其放入 Angular 应用程序的客户端?

我的应用程序使用标准 Angular-CLI 生产构建流程。

最佳答案

我很好奇是否有人有更好或更简单的方法来做到这一点,但这是我想出的解决方案。

我创建了一个小的 js 脚本,并将其保存在项目根目录下的 config.js 文件中。然后,我在 npm postinstall 脚本中添加了该脚本,以便在 ng build 之前运行。

/src/environments/environment.prod.ts

export const environment = {
production: true,
URL: 'https://mykickassapp.herokuapp.com/'
};

config.js

const fs = require("fs");
const appName = process.env.HEROKU_APP_NAME;
if (appName) {
const data = fs.readFileSync('./src/environments/environment.prod.ts', 'utf-8');
const appURL = `URL: 'https://${appName}.herokuapp.com',`;
const newValue = data.replace(/URL:(.*)/g, appURL);
console.log(newValue);
fs.writeFileSync('./src/environments/environment.prod.ts', newValue, 'utf-8');
}

package.json

...
"scripts": {
...
"test": "cross-env DEBUG=true jasmine",
"postinstall": "node config.js && ng build --aot --prod"
},
...

关于angular - 在客户端 Angular 应用程序中访问动态生成的服务器端环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46287491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com