Angular 2 CLI中基于环境的不同代理配置
问题描述:
如何在Angular 2 CLI项目中为开发和生产环境声明2个不同的代理URL?例如,虽然在开发模式下,我想用Angular 2 CLI中基于环境的不同代理配置
{
"/api/*": {
"target": "http://localhost:3000",
"secure": false
}
}
,但在生产模式下,我会用
{
"/api/*": {
"target": "http://api.exampledomain.com",
"secure": false
}
}
答
我不相信你可以通过环境文件控制代理功能。另一种可能是,当你运行你的构建来定义你的API域环境中的文件
// environment.ts
export const environment = {
production: false,
api: 'http://localhost:3000'
};
// environment.prod.ts
export const environment = {
production: true,
api: 'http://api.exampledomain.com'
}
然后在TS源文件拉域从环境文件
// some service
import { Injectable } from '@angular/core';
import { environment } from '../../../environment.ts';
import { Http } from '@angular/http';
@Injectable()
export class SomeService {
constructor(private http: Http);
getData(){
return this.http.get(environment.api + '/rest-of-api');
}
}
现在或服务的命令,他们将使用在环境文件
+0
谢谢,那就是我已经做的。有用。 –
中定义的api路径在src->环境中,有2个文件; 1个用于开发,1个用于产品。 – echonax
是的,有。但是为了使代理配置正常工作,我们需要将上面的代码添加到json文件中。例如proxy.config.json。然后通过'ng serve --proxy-config proxy.config.json'调用这个文件。那么有没有一种方法可以根据环境来改变它? –
因此,不能创建2个不同的文件,并指出运行命令时将其作为--proxy-config文件? – echonax