node.js 配置 npm - NODE_CONFIG_ENV

Ivg*_*vgi 5 production config node.js

我正在尝试使用配置包(npm install config)以便能够针对不同的环境使用不同的配置。我在 Windows 10 上运行它。

我在 config 文件夹下有 4 个文件:default.json、development.json、development.json 和 qa.json。

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

var config = require('config');
var port = config.get('appPort');
Run Code Online (Sandbox Code Playgroud)

我做了一些阅读,发现了另一个值 - NODE_CONFIG_ENV。我做了一些测试:

console.log('NODE_CONFIG_ENV: ' + config.util.getEnv('NODE_CONFIG_ENV'));
console.log('NODE_ENV: ' + config.util.getEnv('NODE_ENV'));
Run Code Online (Sandbox Code Playgroud)

似乎NODE_CONFIG_ENV是造成问题的原因,因为似乎是config用它来决定选择哪个文件。

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

Ivg*_*vgi 3

这是部分解决方案,

"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",
}
Run Code Online (Sandbox Code Playgroud)

我补充NODE_ENV说,以防它返回使用它,但总的来说,我仍然不明白是什么导致它使用NODE_CONFIG_ENV而不是NODE_ENV.

编辑:我找到原因了!这是因为cross-env我之前使用过另一个 npm 包。