【问题标题】:How to pass variables in .env file to angular6 environment.ts file如何将 .env 文件中的变量传递给 angular6 environment.ts 文件
【发布时间】:2018-12-23 14:33:52
【问题描述】:

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

我使用 docker-compose.ymlDockerfile dockerlize 我的 Angular 应用程序

我创建.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

【问题讨论】:

  • 你试过像./.env一样吗?
  • 你的构建过程是在部署到 docker 之前对吗?
  • 您可以尝试在运行时从 assets 文件夹中的 json 文件检索设置(而不是直接使用 environment.ts)。该 json 配置文件将包含占位符,当您启动 CMD 进程时,这些占位符将替换为 en 变量

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


【解决方案1】:

您可以创建一个脚本并在构建之前使用 prebuild 之类的东西执行它。在该脚本中,您可以访问 process,并且可以将 environment.ts 中的一些值替换为您需要的值。

【讨论】:

    猜你喜欢
    • 2020-10-29
    • 2018-02-23
    • 2020-05-01
    • 2021-11-19
    • 2021-07-03
    • 2010-11-18
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多