angular - Angular:构建后是否可以读取json文件
问题描述
我正在开发一个需要在不同服务器上运行的 Angular 7 项目。我需要从环境文件中读取服务器 URL,并且不能设置为静态变量。
我尝试读取一个 JSON 文件,但是一旦我构建项目,它就会将 JSON 的内容复制为 main.js 中的静态值
构建项目后是否可以动态读取 JSON 文件?就像从 env.json 中读取一样,我可以在构建项目后放入
解决方案
我在 assets 文件夹中创建了一个 setting.json 文件,在 ng build 之后我转到 setting.json 更改后端 url。
export class SettingService {
constructor(private http: HttpClient) {
}
public getJSON(file): Observable<any> {
return this.http.get("./assets/configs/" + file + ".json");
}
public getSetting(){
// use setting here
}
}
在 app 文件夹中,我添加文件夹 configs/setting.json
setting.json 中的内容
{
"baseUrl": "http://localhost:52555"
}
在应用模块中添加 APP_INITIALIZER
{
provide: APP_INITIALIZER,
useFactory: (setting: SettingService) => function() {return setting.getSetting()},
deps: [SettingService],
multi: true
}
推荐阅读
- c# - 将“SafeHandle”用于 C API,包括引用计数
- typescript - 返回量角器“element.all”的函数具有输出类型 Promise
而不是承诺 在打字稿中 - dialogflow-es - Dialogflow 检测意图并返回多个意图名称和置信度值
- python-3.x - 保留字典中不在列表中的值
- excel - 如何在excel中的两个valor之间求和?
- javascript - Vue 在 Axios API 调用中将布尔值从 true 更改为 false
- python - 从标签内的网页中提取公司名称
- powershell - 如何在 Pester 中“获取调用的参数”(或生成包含实际值和预期值的有用消息)?
- php - 如何在 symfony 3 中使用相对路径
- azure-active-directory - 向托管标识授予 O365 管理 API 权限