2

I have the frontend part of a project using Angular and I am trying to find out how to properly hide an API key in a production environment (Heroku).

There are two variables I need to change between the local and production environments, namely the backend URL and the API Key. I have used the environment.prod.ts and environment.ts files to manage switching the URL and am trying to understand how to do the same for an API_KEY I want to hide.

So far I made it like this (and it works for the URL)

environment.prod.ts

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

export const environment = {
  production: false,
  baseUrl: 'http://localhost:8080/',
  ...openchargemaps
};

environment.prod.ts

export const environment = {
  production: true,
  baseUrl: 'https://MYBACKENDBUILD.herokuapp.com/',
  openchargemaps: {
    API_KEY: '',
  }
};

openchargemaps.environment.ts (NOT PUSHED TO REPO/HEROKU, ONLY TO BE USED FOR LOCAL ENVIRONMENT)

export const openchargemaps = {
  openchargemaps: {
    API_KEY: 'XXXX-XXXX-XXXX-XXXX-XXXXXXXX'
};

For production, I have created the environment variable on heroku: OPENCHARGEMAPS_API_KEY : XXXX-XXXX-XXXX-XXXXXXXXXXX

And finalyy I import this in my components this way :

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

baseUrl = environment.baseUrl + 'ev/v1/auth/users/';
APIKey = environment.openchargemaps.API_KEY;

It works well for the URL but not the api key.

What am I doing wrong and how can I make it work ?

For info this is my version of Angular :

ng --version

Angular CLI: 10.1.7
Node: 14.15.0
OS: win32 x64

Angular: 10.1.6
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router
Ivy Workspace: Yes

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1001.7
@angular-devkit/build-angular   0.1001.7
@angular-devkit/core            10.1.7
@angular-devkit/schematics      10.1.7
@angular/cli                    10.1.7
@angular/google-maps            11.1.0
@schematics/angular             10.1.7
@schematics/update              0.1001.7
rxjs                            6.6.3
typescript                      4.0.5
Reivilo85k
  • 21
  • 1

0 Answers0