在Angular 5环境中使用process.env

Fre*_*ris 17 devops angular angular5 ng-build

我尝试使用标准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/',
};
Run Code Online (Sandbox Code Playgroud)

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

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

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

chr*_*spy 12

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

process.env适用于NodeAngular应用程序不适用的应用程序.

你有几个选择:

1)在构建管道中创建某种任务,以便在真正需要动态的情况下使用正确的值更新环境文件.

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

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

"environments": {
    "dev": "path/to/dev/env",
    "prod": "path/to/prod/env"
}
Run Code Online (Sandbox Code Playgroud)

用你的应用程序构建ng build --env=prod.

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

  • 我不认为在environment.ts文件中放置**secret**环境变量是正确的. (7认同)
  • @novaline正确,你不应该在你的环境文件中放置秘密env变种.但是,如果您要向浏览器发送内容,那么无论如何它都不会是秘密. (6认同)