如何检测expressJS应用运行的环境? (开发,测试,生产?)。 process.env
中没有任何内容表明环境......
我知道您可以在每个环境下的配置文件中声明变量,但是如果您动态加载模块,则无法提供帮助...
答案 0 :(得分:65)
您可以通过查看app.settings.env
来检查环境(这可以在Express中使用),或者您可以通过检查process.env.NODE_ENV
以更直接的方式来检查环境(环境是在默认情况下该变量或'开发'<这也适用于其他库,如Socket.IO等。)
答案 1 :(得分:23)
app.get(' env')也会返回环境。
if ( app.get('env') === 'development' ) {
app.use(express.errorHandler());
}
答案 2 :(得分:10)
我想解决一种将NODE_ENV变量传递到节点脚本的简单方法,以便在process.env
"scripts": {
"start": "./node_modules/.bin/cross-env NODE_ENV=development ./node_modules/.bin/nodemon server.js",
"debug": "./node_modules/.bin/cross-env NODE_ENV=development ./node_modules/.bin/nodemon --debug server.js",
"test": "./node_modules/.bin/cross-env NODE_ENV=test ./node_modules/.bin/babel-tape-runner test/test-*.js"
},
可以用作
if ( app.get('env') === 'development' ) {
app.use(express.errorHandler());
}
答案 3 :(得分:2)
通过检查app.settings.env
可以检测到您所处的环境。
答案 4 :(得分:0)
无法访问nodejs服务器。可以使用app.setting.env
从express中检测节点envvar app = express();
答案 5 :(得分:0)
其他答案中有很多有用的建议。我通常这样做:
const environment = process.env.NODE_ENV || 'development';
好处是这种方法并非特定于Express本身,但实际上是更广泛的Node.js生态系统中的公认实践。
另外,我实现了一个可重用的模块,它允许通过分析CLI参数和NODE_ENV变量来自动检测环境。这在您的开发机器上非常有用,因为您可以通过将CLI参数传递给Node.js程序来轻松更改环境,如下所示:$ node app.js --prod
。
请在detect-environment
's page上查看更多详情和用例。