I'm working on an app that connects to third-party APIs which require the use of an APP ID and SECRET KEY.
I am storing these values as environment variables in heroku, so that I don't need to expose them in my code.
If I deploy to heroku, it will use heroku's environment variables to resolve these API credentials.
If I'm working on it locally, I want to use my config.js
module, and lookup the API credentials there. NOTE: This config.js
file is included in my .gitignore
so that these credentials never end up in the cloud.
The problematic code is this:
var api_secret = process.env.API_SECRET || require('../../config.js').secret;
When I run this locally, I've got no issues. Meaning, it is unable to resolve the environment variable, so instead it uses the secret
from within config.js
.
When I run it on heroku, it DOES throw an error telling me that module 'config.js' could not be found
. This makes sense, because it was never pushed up with the rest of the repo, by virtue that it is in my .gitignore
.
Because heroku is parsing through my code before it ever runs, the require('../../config.js')
is problematic. It is trying to lookup a file that doesn't exist.
How can I solve the issue of using environment variables when deployed, and the config.js
module when running locally?