Get and Set Environment Variables in Node.js
One of the best ways to use sensitive information in open source repositories without hard-coding the information within publicly available repositories is setting environment variables. Set the environment variables on the server, retrieve them by key within your application.
When using Node.js, you can retrieve environment variables by key from the process.env object:
var mode = process.env.mode; // 'PRODUCTION', for example
var apiKey = process.env.apiKey; // '38294729347392432'
There are time when you may want to set environment variables while you run your node app -- these are set temporarily while the process is still running. A common case is simulating environment variables during testing. You can temporarily set these variables by pegging items onto the process.env object:
process.env.mode = 'TESTING';
// Now app code knows not to do destructive transactions!
Simple enough but worth documenting for future use!
![7 Essential JavaScript Functions]()
I remember the early days of JavaScript where you needed a simple function for just about everything because the browser vendors implemented features differently, and not just edge features, basic features, like addEventListener and attachEvent. Times have changed but there are still a few functions each developer should...
![9 Mind-Blowing Canvas Demos]()
The <canvas> element has been a revelation for the visual experts among our ranks. Canvas provides the means for incredible and efficient animations with the added bonus of no Flash; these developers can flash their awesome JavaScript skills instead. Here are nine unbelievable canvas demos that...
![Assign Anchor IDs Using MooTools 1.2]()
One of my favorite uses of the MooTools JavaScript library is the SmoothScroll plugin. I use it on my website, my employer's website, and on many customer websites. The best part about the plugin is that it's so easy to implement.
I recently ran...
![Send Email Notifications for Broken Images Using jQuery AJAX]()
It's usually best to repair broken image paths as soon as possible because they can damage a website's credibility. And even worse is having a user tell you about it. Using jQuery and PHP, you can have your page automatically notify you of broken...
I believe it’s more common to use
process.env.NODE_ENVinstead ofprocess.env.modeThis is an interesting problem. What if you are using aws or heroku for hosting? You could have your deployment script setup the keys, but you’d need to prompt each time you create a new instance.
I encrypted the keys in a json file with AES 256 and in my run/deploy script it prompts for a password and decrypts it running the rest of the application with env variables. It’s not perfected yet, but this might be a good way to put it on github.
Are these variables just being set via the command line?
Yep!
I have had great success with json-configurator (https://www.npmjs.com/package/json-configurator). Use it with
process.env.NODE_ENVas a input.require('json-configurator')(configJson, process.env.NODE_ENV ).userEndpoint;