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

如何检测expressJS应用程序运行的环境? (开发,testing,生产?)。 process.env没有任何内容表示环境…

我知道你可以在你的configuration文件中的每个环境下声明variables,但是这对你dynamic加载模块没有帮助。

您可以通过检查app.settings.env来检查环境(这可以在Express中工作),也可以通过检查process.env.NODE_ENV (环境是在该variables中find的环境) '开发'默认情况下<这也适用于其他库,如Socket.IO等)。

app.get('env')也会返回环境。

 if ( app.get('env') === 'development' ) { app.use(express.errorHandler()); } 

我想解决一个简单的方法来将NODE_ENVvariables传递给你的节点脚本,以便在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()); } 

可以通过检查app.settings.env来检测你所在的环境。

无法访问nodejs服务器。 可以使用app.setting.env检测节点env

  1. var app = express();
  2. app.setting.env呈现给模板引擎。
  3. 从浏览器中检查。

其他答案有很多有用的build议。 我通常这样做:

 const environment = process.env.NODE_ENV || 'development'; 

好处是,这种方法本身并不是特定的,但实际上是在广泛的Node.js生态系统中被接受的做法。

另外,我已经实现了一个可重用模块,它允许通过分析CLI参数和NODE_ENVvariables来自动检测环境。 这可能对你的开发机器很有用,因为你可以通过给你的Node.js程序如下这样简单地改变环境: $ node app.js --prod

请在detect-environment的页面上查看更多的细节和用例。