如何在导入语法中使用环境变量?

时间:2019-01-25 08:51:31

标签: angular typescript environment-variables

我正在使用角度v5。我想做

import { OwnedSetABI } from 
`../constant/${environment.envName}/OwnedSetContractABI`;

我在不同文件夹中有OwnedSetContractABI文件,并希望根据环境使用。例如,对于开发环境,OwnedSetABI的路径将为“ ../constant/dev/OwnedSetContractABI”,对于生产环境,OwnedSetABI的路径将为“ ../constant/production/OwnedSetContractABI”。但是ES6不允许在导入语法中使用变量。我如何实现这种情况?

2 个答案:

答案 0 :(得分:0)

检查angular.json和ctrl + f中的“ fileReplacements”,您将在其中看到所需的答案。

简而言之,您会根据环境告诉angular替换environment.ts的内容。

任何与环境相关的变量都将它们以相同的变量名称放入这些环境文件中,并且它们将在服务或构建时自动替换。然后只需将其导入environment.ts(绑定到被替换)

答案 1 :(得分:0)

我认为您可以在angular.json中定义多个配置

     "production": {
     "fileReplacements": [
            {
              "replace": "src/environments/environment.ts",
              "with": "src/environments/environment.prod.ts"
            }
          ]
     },
     "dev": {
         "fileReplacements": [
            {
              "replace": "src/environments/environment.ts",
              "with": "src/environments/environment.dev.ts"
            }
          ]

     }

,在每个环境文件中,您可以从不同目录导入特定的OwnedSetABI environment.prod.ts

export * from './prod/OwnedSetContractABI';

所以您只是以这种方式导入

import {environment} from '../environments/environment';

并运行构建并为所需的配置dev或prod服务

ng build --env=production

ng serve --env=production