如何在Angular 5 server.ts中获取--env变量的值?

时间:2018-05-15 06:52:27

标签: angular angular5 devops angular-universal ng-build

目前我有三种环境,我想在我的--env=prod中获取server.ts值,在这种情况下为prod
我在我的角度应用程序中获取了正确的环境对象,但是在我的server.ts文件中找到它是实现ssr所必需的 我正在使用属性--env=prod--env=dev设置环境,并在我的server.ts中导入 import { environment } from'./src/environments/environment';

这是.angular-cli.json中我的环境对象对于角度和服务器平台的看法

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

我确实拥有上述路径中的所有文件

4 个答案:

答案 0 :(得分:2)

令我惊讶的是,人们很难理解这个问题。用大胆的大写字母大喊同一件事真是愚蠢。

简体:

environment.ts = { magicKey: "default" }

environment.prod.ts = { magicKey: "46df465d4f64fd654f6fe4d64f" }

----使用“ --configuration = prod”进行构建后----

在app.component中:

import { environment } from "environments/environment";
console.log(environment.magicKey); // == "46df465d4f64fd654f6fe4d64f"

在server.ts中:

import { environment } from "environments/environment";

注意:这产生了构建错误“无法解析server.ts中的'环境/环境'”。 其他线程建议使用正确的相对路径,但现在看来我们只是获得默认文件,即“ fileReplacements”未被尊重/使用:

import { environment } from "./src/environments/environment";
console.log(environment.magicKey); // == "default"

据我所知...它应该工作。我还验证了angular.json中“服务器”也存在“ fileReplacements” ...没关系。它似乎只是不想替换文件。

我认为这是因为server.ts不会发生“替换”。它在应用程序的“外部”,因此花哨的逻辑不会发生吗?还是可能(不同的)导入覆盖了它?

我的解决方法只是将所有环境导入server.ts,然后根据我在每台计算机上设置的环境(process.env)变量选择正确的环境。

如果有人有一些见识,那么我确定我不是唯一感兴趣的人。

答案 1 :(得分:0)

试试这个

<div class="input-field col s12" ng-init="test=2">
        <label for="item_code" class="active">Category</label>
          <select 
            ng-model="test"
            ng-options="c.name for c in categories track by c.id"
          >
          </select>
          <p>This is the value {{test}}</p>
      </div>

答案 2 :(得分:0)

Angular在构建时处理环境变量。

写作时

import { environment } from 'environment';

Angular会在您运行构建命令时获取您决定的环境。

这意味着即使你导入了dev环境(默认环境),如果你写了

ng build --prod

您的生产环境将被采用。

顺便说一句,如果环境文件中没有完全相同的值,则会出现编译错误。因此,您可以将变量从一个环境复制并粘贴到另一个环境中。

答案 3 :(得分:0)

如果您已经没有

,请将angular-cli更新为最新版本

离开environments/environment.ts并且不要将其用于dev,而是创建一个environment.dev.ts

如果您没有environmentSource,请添加一个 "environmentSource": "environments/environment.ts", "environments": { "dev": "environments/environment.dev.ts", "prod": "environments/environment.prod.ts", "test": "environments/environment.test.ts" }

foreach()