node.jsconfigproduction

node.js config npm - NODE_CONFIG_ENV


I am trying to use the config package (npm install config) to be able to use different configurations for different enviromenets. I am running it on windows 10.

I got 4 files under the config folder : default.json, development.json, production.json and qa.json.

when i am running SET NODE_ENV=production for example it applys to it but config still aint taking the info from the right file.

var config = require('config');
var port = config.get('appPort');

I done some reading and i found out about another value - NODE_CONFIG_ENV. I done some testing with :

console.log('NODE_CONFIG_ENV: ' + config.util.getEnv('NODE_CONFIG_ENV'));
console.log('NODE_ENV: ' + config.util.getEnv('NODE_ENV'));

And it seems that NODE_CONFIG_ENV is responsible for the problem because it seems that config is using it instead to decide which file to choose.

My question is how can i make config use NODE_ENV again?
Or if it is not possible how can i set NODE_CONFIG_ENV instead?


Solution

  • Here is a partial solution,

    "scripts": {
        "dev": "SET NODE_CONFIG_ENV=development&&SET NODE_ENV=development&& nodemon server.js",
        "qa": "SET NODE__CONFIG_ENV=qa&&SET NODE_ENV=qa&& node server.js",
        "prod": "SET NODE_CONFIG_ENV=production&&SET NODE_ENV=production&& node server.js",
    }
    

    I added NODE_ENV in case it returns back to using it but overall I still didnt figure out what caused it to use NODE_CONFIG_ENV instead of NODE_ENV.

    Edit: I found the reason! It was because of another npm package called cross-env which i used earlier.