2

目前我有三个 环境,我正在尝试获得--env=prod价值属性或导入我的喜欢 server.tsprod
server.ts
--env=prod--env=devserver.tsimport { environment } from'./src/environments/environment';

这就是我的环境对象在.angular-cli.json角度和服务器平台上的样子

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

我确实在提到的路径中有所有文件

4

4 回答 4

3

令我惊讶的是,人们理解这个问题是多么困难。用粗体大写字母大喊大叫是愚蠢的。

简化:

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) 变量选择正确的环境。

如果有人有一些见解,那么我相信我不是唯一感兴趣的人。

于 2019-01-22T13:24:59.780 回答
0

尝试这个

import { environment } from '../../../environments/environment';
// use path to your environments file.

private apiEndPoint: string;

constructor() {
    this.apiEndPoint = environment.apiUrl;
}
于 2018-05-15T06:55:35.187 回答
0

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

当你写

import { environment } from 'environment';

Angular 采用您在运行构建命令时决定的环境。

这意味着即使您导入了开发环境(默认环境),如果您编写

ng build --prod

您的生产环境将被占用。

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

于 2018-05-15T07:02:50.340 回答
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"
  }
于 2018-05-16T10:23:05.847 回答