我正在使用angular4(4.4.6)和CLI 1.4.3。我尝试按照这篇文章创建环境变量:https://alligator.io/angular/environment-variables/。我最终得到了3个文件:environment.ts。
export const environment = {
production: false,
restUrl: 'http://localhost:3000/',
socketUrl: 'http://localhost:2000'
};
environment.prod.ts
export const environment = {
production: true,
restUrl: 'http://139.130.4.5:3000/',
socketUrl: 'http://139.130.4.5:2000'
};
以及environment.staging.ts
export const environment = {
production: true,
restUrl: 'http://139.130.4.5:3000/',
socketUrl: 'http://139.130.4.5:2000'
};
我使用它们如下:
import { environment } from '../../environments/environment';
constructor() {
this.serverUrl = environment.restUrl;
console.log('the env is:' this.serverUrl');
}
在.angular-cli.json文件中,我有以下内容:
"environmentSource": "environments/environment.ts",
"environments": {
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts",
"staging": "environments/environment.staging.ts"
}
有一个奇怪的问题,当我运行ng build --env=prod
时,虽然编译和一切工作正常,但最终产品仍会使用本地主机(dev)环境变量。
更奇怪的是,当我使用ng server --env=prod
时,它完美地使用了生产环境变量。
为什么会这样?我该如何使用prod或staging环境变量进行构建?