31

我尝试使用标准ng build --prod命令构建 Angular 5 应用程序,并且我想将基本 API-Url 设置为environment.prod.ts取决于我的process.env变量的值。

这是我的文件:

export const environment = {
    production: true,
    apiUrl: `${process.env.BASE_URL}` || 'http://localhost:8070/',
};

但是当我尝试构建应用程序时,会出现以下错误:

ERROR in src/environments/environment.ts(7,16): error TS2304: Cannot find name 'process'.

在构建应用程序时,如何根据环境变量设置我的 API-Url?

4

1 回答 1

22

更新

根据下面的评论,原始答案并不完全清楚——Angular 是使用 Angular CLI 构建的,它是一个节点应用程序,但process.env在构建过程中您无法直接从应用程序内部访问,因为它没有被处理为节点应用。

这些概念几乎保持不变,但理解上述内容很重要。

原来的

您将无法process.env在 Angular 代码的编译时访问。

process.env可用于Node应用程序,而 Angular 应用程序不可用。

你有几个选择:

  1. 如果环境文件确实需要动态,请在构建管道中执行某种任务以使用正确的值更新环境文件。

  2. 只需对其进行硬编码并制作几个环境文件以匹配您的每个环境。您可以在 angular-cli.json 中指定您的环境。

选项 2 听起来可能适合您。在这种情况下,你想把它放在你的 angular-cli.json 中:

"environments": {
    "dev": "path/to/dev/env",
    "prod": "path/to/prod/env"
}

并使用ng build --env=prod.

以下是更深入的信息: https ://alligator.io/angular/environment-variables/

于 2018-03-26T16:46:57.810 回答