我们如何在angular version> = 2中使用环境变量

use*_*967 9 angular

我现在正在阅读angular4 doc,并注意到,有一个文件夹,环境,并且在其下有多个环境文件,例如environment.ts,environment.prod.ts,如果我们使用env = prod构建,那么prod将使用环境变量.现在我有一个问题,如何从代码中获取环境变量?我搜索了很多文档,没有提到这一点.谁能帮忙告诉我如何获取环境变量值?谢谢

Ket*_*ari 23

如果您在.angular-cli.json文件中使用CLI ,请放置此代码.(从角度6开始,.angular-cli.json文件重命名为.angular.json)

"environments": {
    "dev": "environments/environment.ts",
    "prod": "environments/environment.prod.ts"
  }
Run Code Online (Sandbox Code Playgroud)

在开发环境文件中,您可以编写

export const environment = {
production: false,
url: 'http://something.com'
};
Run Code Online (Sandbox Code Playgroud)

在prod环境文件中,你可以写

export const environment = {
production: true,
url: 'http://something.com'
}
Run Code Online (Sandbox Code Playgroud)

在组件或服务中,您可以使用like

import {environment} from '../../environments/environment';
environment.url;
Run Code Online (Sandbox Code Playgroud)

你可以命令:

ng serve --dev     // Or 
ng serve --prod
Run Code Online (Sandbox Code Playgroud)

注意:您应该直接在app目录中拥有环境目录,并且两个环境文件都应该在那里.

  • 问题是如果你在环境文件中包含prod配置,你仍然最终会将它们提交给你的vcs工具.这也意味着你的ci将部署一个--prod构建,其中可以从.bundle.js文件中读取值(api-keys,密码和其他敏感信息).它们很难找到,但是它们在明文中存在......对于prod,你必须通过一个单独的git repo引入配置,或者找到一种提供环境变量的方法. (2认同)