Can't read my environment variable in my Node.js app
bash, environment-variables, node.js, terminal, ubuntu
Solution
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'
Problem
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.