如何将.env文件中的变量传递到angular6 environment.ts文件

时间:2018-07-16 05:35:26

标签: angular docker docker-compose angular-cli angular-cli-v6

对于angular6,全局变量process未定义。

我使用docker-compose.ymlDockerfile Docker化我的有角度的应用程序

我创建了.env文件,存储了docker-compose.yml使用的秘密变量

但是,如果我将变量存储在.env文件的应用程序代码中,如下所示:

process.env.GITHUB_ACCESS_TOKEN

将引发错误

ERROR in src/app/app.module.ts(41,58): error TS2304: Cannot find name 'process'.
src/app/app.module.ts(53,12): error TS2304: Cannot find name 'process'.

我的要求是:

  1. 使用docker-compose up在docker容器中运行应用程序
  2. 在应用程序代码内,获取.env文件中定义的环境变量。

这是我的docker-compose.yml

version: '2.1'

services:
  angular-apollo-starter:
    image: angular-apollo-starter
    build: .
    environment:
      NODE_ENV: production
    env_file: .env
    ports:
      - 8080:80

我认为传递环境变量的工作流程应如下:

.env-> environment.prod.ts-> application code

更新

我发现了一个有关此问题的问题:https://github.com/angular/angular-cli/issues/4318

1 个答案:

答案 0 :(得分:0)

您可以创建脚本并在使用 prebuild 之类的脚本执行该脚本之前执行该脚本。在该脚本中,您可以访问 process ,并且可以用您需要的内容替换environment.ts中的某些值。