Angular 在分发文件夹中没有看到环境文件

Angular Environment file not seen in the distribution folder

我有一个 angular 8 应用程序并正在测试 enviornment.ts 文件中设置的超时。我目前已将超时设置为 6 分钟 我有两个环境文件 enviornment.ts 和 enviornment.prod.ts。我相信 enviornment.prod.ts 用于 ng build --prod 被执行。

在 运行 ng build 命令之后,我无法在发行版中找到环境文件 folder.Could 有人告诉我 我在哪里可以找到它。它是在一些二进制等

这是我的环境文件的样子

// The file contents for the current environment will overwrite these during build.
// The build system defaults to the dev environment which uses `environment.ts`, but if you do
// `ng build --env=prod` then `environment.prod.ts` will be used instead.
// The list of which env maps to which file can be found in `.angular-cli.json`.

export const environment = {
    production: false,
    baseUrl: "http://localhost:57973",
    loginUrl: "/Login",
    adminUrl: "/Admin",
    userIdleMinutes: 10
};

首先,您需要在代码中实际使用 environment.ts 文件。例如:

import { Component } from '@angular/core';

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

@Component({})
export class AppComponent {
  env = environment;
  constructor() {
    console.log(this.env.baseUrl);
  }
}

否则,未使用的代码将被摇树。

然后,environment.ts 文件中的代码将被捆绑到主 XXXXX.js 文件中。

万物环境有两个关键文件。


angular.json - 应该有如下内容:

      "architect": {
        "build": {
          ...
          "configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ],

换句话说,如果配置是生产配置,任何对 environment.ts 的引用都将被覆盖,而 environment.prod.ts 将被使用。

所以是的,你是对的 ...我相信在执行 ng build --prod 时使用 enviornment.prod.ts。


main.ts - 应该有

if (environment.production) {
  enableProdMode()
}

例如,这会删除变更检测中的开发检查。 如果 enableProdMode() 尚未 运行。

,您将看到控制台消息 Angular is running in the development mode. Call enableProdMode() to enable the production mode.

environment.ts 开发时使用。 其变量的内容,在编译时被替换

也就是说,angular 团队实现环境文件的整个概念在其基础上存在重大缺陷。在我看来,最大的一个问题是需要 编译每个环境 。实际上,使用不同的编译文件进行测试和使用不同的生产文件是一个坏主意。

您应该完全部署您测试的内容,而不是相似,而是完全相同。

davembush suggested a workaround 使用配置文件,或者类似 .net 的 web.config 动态填充您的配置。这需要一些 hack&slash,但可以为您提供一次编译即可部署的应用程序。

值得注意。