--ng build --env = prod无效

Efi*_*sky 29 angular

我使用的是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'
};
Run Code Online (Sandbox Code Playgroud)

environment.prod.ts

export const environment = {
  production: true,
  restUrl: 'http://139.130.4.5:3000/',
  socketUrl: 'http://139.130.4.5:2000'
};
Run Code Online (Sandbox Code Playgroud)

environment.staging.ts

export const environment = {
  production: true,
  restUrl: 'http://139.130.4.5:3000/',
  socketUrl: 'http://139.130.4.5:2000'
};
Run Code Online (Sandbox Code Playgroud)

我用它们如下:

import { environment } from '../../environments/environment';
 constructor() {
    this.serverUrl = environment.restUrl;
    console.log('the env is:' this.serverUrl');
  }
Run Code Online (Sandbox Code Playgroud)

.angular-cli.json我有以下内容:

"environmentSource": "environments/environment.ts",
      "environments": {
        "dev": "environments/environment.ts",
        "prod": "environments/environment.prod.ts",
        "staging": "environments/environment.staging.ts"
      }
Run Code Online (Sandbox Code Playgroud)

从某种原因,当我运行ng build --env=prod它编译和一切,但最终产品使用localHost(dev)环境变量.

更奇怪的是,当我使用ng server --env=prod它时,它与生产变量完美配合.

为什么会这样?如何使用prod或staging环境变量构建?

小智 38

使用这样的命令为Anuglar 6构建

ng build --prod --configuration=dev
Run Code Online (Sandbox Code Playgroud)

或者使用别名:

ng build --prod --c=dev
Run Code Online (Sandbox Code Playgroud)

  • 服务于相同的目的。您必须在 `angular.json` 配置文件中添加文件替换(当您迁移到 Angular 6 时应该会自动创建)。 (3认同)
  • 这不是针对环境文件,而是针对angular.json文件中的配置条目 (2认同)

Nad*_*lta 10

尝试设置目标环境也是如此:

ng build --target=production --environment=prod

ng build --prod --env=prod

ng build --prod

https://github.com/angular/angular-cli/wiki/build发展目标默认情况下使用.


Lon*_*ely 9

Angular 7-通过CLI创建的项目:

ng build --prod --configuration production


Jua*_*uan 5

这是一个在较新版本的cli中修复的旧问题.我不知道如果不知道你正在使用什么cli和@angular minor和patch版本.

尝试添加./到您的.angular-cli.jsonENVS.

"environments": {
    "dev": "./environments/environment.ts",
    "prod": "./environments/environment.prod.ts",
    "staging": "./environments/environment.staging.ts"
}
Run Code Online (Sandbox Code Playgroud)

如果这个为您修复了,那么我建议您将依赖项和cli升级到最新版本,将角度包升级到最新的4.minor.patch版本,以防止遇到其他已修复的错误.