导入到typescript时JSON文件的缓存版本



在我的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);
}
);
}

最新更新