node.js config npm – NODE_CONFIG_ENV

我正在尝试使用configuration软件包(npm install config)来为不同的环境使用不同的configuration。 我在Windows 10上运行它。

我在configuration文件夹下有4个文件:default.json,development.json,production.json和qa.json。

当我运行SET NODE_ENV=production例如适用于它,但config仍然不从正确的文件的信息。

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

我做了一些阅读,我发现了另一个值 – NODE_CONFIG_ENV 。 我做了一些testing:

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

看来, NODE_CONFIG_ENV是负责的问题,因为它似乎config使用它,而不是决定select哪个文件。

我的问题是我怎样才能使config再次使用NODE_ENV
或者,如果不可能,我该如何设置NODE_CONFIG_ENV呢?

这是一个部分的解决scheme,

 "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", } 

我添加了NODE_ENV ,以防它返回使用它,但总体上我还没有弄清楚是什么导致它使用NODE_CONFIG_ENV而不是NODE_ENV

编辑:我find了原因! 这是因为我之前使用的另一个叫做cross-env npm包。