在我的SPA中,我正在导入一个类似的JSON文件
import jsonconfig from './environment/conf.json'
我设置json打字员(json-typetings.d.ts(
declare module "*.json" {
const value: any;
export default value;
}
当地一切正常。从JSON 读取值
但当我部署应用程序时,问题出现了。我正在使用CI管道进行构建,并使用octopus进行部署。构建项目后,我使用Octopus更改了JSON文件以适应不同的环境。
以下是我的JSON看起来像的样子
{
ClientID:xxxxx
RedirectUri:http://xxxx
key:xxxx
}
我在构建后更改JSON文件是因为对于不同的环境,上面的参数会有所不同。
但问题是,即使在更改了部署文件中的值之后,它看起来仍然使用我们更改之前的旧值
我去了azure门户网站查看JSON文件中的值,它看起来更新后没有任何问题。
所以上面的JSON现在看起来像这样
{
ClientID:yyyyyy
RedirectUri:http://yyyy
key:yyyyyyyeeee
}
但应用程序在执行时仍然显示旧值。构建重定向URI之前的FOr示例是http://localhost:4200.在我的代码中,重定向URI被更新为实时url。但应用程序仍然重定向到localhost。感觉它没有从实时更新的JSON文件中获取数据。
如何解决此问题??
我已经用这个方法解决了我的问题。我在资产中添加了json文件。
资产/环境/conf.json
{
ClientID:xxxxx
RedirectUri:http://xxxx
key:xxxx
}
当页面加载时,它将调用服务来调用json文件
应用程序模块.ts
import { ConfigService } from './services/config.service';
providers: [
{
provide: APP_INITIALIZER,
multi: true,
deps: [ConfigService],
useFactory: (appConfigService: ConfigService) => {
return () => {
return appConfigService.loadAppConfig();
};
},
}
]
配置服务.ts
export interface Config {
ClientID: string;
RedirectUri: string;
key: string;
}
loadAppConfig() {
this.http
.get<Config>("assets/environment/conf.json")
.pipe(
retry(2),
)
.subscribe(
(data: Config) => {
this.appConfig = { ...data };
},
(error) => {
console.log(error);
}
);
}