你如何检测express.js应用程序中的环境?

时间:2011-12-09 17:53:31

标签: javascript node.js express

如何检测expressJS应用运行的环境? (开发,测试,生产?)。 process.env中没有任何内容表明环境......

我知道您可以在每个环境下的配置文件中声明变量,但是如果您动态加载模块,则无法提供帮助...

6 个答案:

答案 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中检测节点env
  1. var app = express();
  2. app.setting.env渲染到模板引擎。
  3. 从浏览器中查看。

答案 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上查看更多详情和用例。