【发布时间】:2018-12-23 14:33:52
【问题描述】:
对于angular6,全局变量process 未定义。
我使用 docker-compose.yml 和 Dockerfile 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'.
我的要求是:
- 使用
docker-compose up在docker容器中运行应用程序 - 在应用程序代码中,获取在
.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