【问题标题】:--ng build --env=prod is not working--ng build --env=prod 不工作
【发布时间】:2018-06-17 15:08:40
【问题描述】:

我正在使用 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 时,它会编译所有内容,但最终产品使用 localHost(dev) 环境变量。

更奇怪的是,当我使用 ng server --env=prod 时,它可以完美运行,并带有生产变量。

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

【问题讨论】:

  • @ Efim,我在使用 Angular 5 时遇到了同样的问题,以下解决方案都不适合我 :(,有版本 5 的解决方案吗?
  • @Efim,你有没有找到解决这个问题的方法?

标签: angular


【解决方案1】:

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

ng build --prod --configuration=dev

或者使用别名:

ng build --prod --c=dev

【讨论】:

  • 这不是针对环境文件,而是针对 angular.json 文件中的配置条目
  • 虽然有同样的目的。您必须在 angular.json 配置文件中添加文件替换(应该只是在您迁移到 Angular 6 时自动创建)。
【解决方案2】:

Angular 7+ (8/9/10) - 通过 CLI 创建项目:

ng build --prod --configuration production

【讨论】:

    【解决方案3】:

    尝试像这样设置你的目标环境:

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

    ng build --prod --env=prod

    ng build --prod

    默认使用每个https://github.com/angular/angular-cli/wiki/build开发目标。

    【讨论】:

    • 问题是,我还没准备好投入生产,Angular 对无用的文件不满意(将来会用到)。
    【解决方案4】:

    这是一个旧问题,已在较新版本的 cli 中得到修复。如果不知道您使用的是什么 cli 和 @angular 次要和补丁版本,我无法判断是否是这样。

    尝试将 ./ 添加到您的 .angular-cli.json 环境中。

    "environments": {
        "dev": "./environments/environment.ts",
        "prod": "./environments/environment.prod.ts",
        "staging": "./environments/environment.staging.ts"
    }
    

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

    【讨论】:

    • './' 修复无效,我使用 Angular 4.4.6 和 CLI 1.4.3
    【解决方案5】:

    确保在您各自的组件中导入正确。错误地导入错误的环境文件也可能导致此问题。就我而言,我有这样的导入:

    import { environment } from '../../../../environment/environment.dev'; 
    

    这让我们很多人感到困惑,直到我们发现它,因为我们从未看过进口。我们必须导入 environment.ts 文件,只有这样它才能使用替换的文件。更正后的导入将如下所示:

    import { environment } from 'src/environments/environment';
    

    【讨论】:

      【解决方案6】:

      尝试使用以下命令

      ng build -prod

      【讨论】:

        猜你喜欢
        • 2018-07-27
        • 1970-01-01
        • 1970-01-01
        • 2017-07-04
        • 2018-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-09
        相关资源
        最近更新 更多