I am on Ubuntu 12.04 and I'm just learning about environment variables. I am trying to read a custom variable from within my application but it always shows up as undefined
. Here is the code of my test app:
// app.js
console.log('Value: ' + process.env.NODE_ENV);
If I run the following commands you will see that the variable has a value:
$ NODE_ENV=production
$ echo $NODE_ENV
production
I can echo $NODE_ENV
all day and it will continue to show me "production", but when I do process.env.NODE_ENV
in my Node application it always displays "undefined".
$ node app.js
Value: undefined
Here is the odd part though, if I display another environment variable that I know already exists, say process.env.PATH
, then it works.
$ node app.js
Value: /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Another quirk is that the command printenv list
doesn't appear to contain my custom variable NODE_ENV
despite the fact that echo $NODE_ENV
shows me the correct value. printenv NODE_ENV
shows nothing as well, but printenv PATH
shows the proper value just as it did when I accessed PATH
in my node application.
The dotenv package for handling environment variables is the most popular option in the Node. js community. You can create an. env file in the application's root directory that contains key/value pairs defining the project's required environment variables.
You need to export
shell variables in order to make them available to processes you execute in your shell.
Compare the output of this command:
FOO=bar; bash -c 'echo $FOO'
with the output of this:
export FOO=bar; bash -c 'echo $FOO'
I found my way here from something really silly.
I had just added the new exported variables, but my node process still wasn't seeing them. Then I realized it wasn't enough to restart the node process—I had to open a new terminal (ie. bash instance) too. Once I did this, it worked fine :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With