你如何检测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
-
var app = express();
- app.setting.env呈现给模板引擎。
- 从浏览器中检查。
其他答案有很多有用的build议。 我通常这样做:
const environment = process.env.NODE_ENV || 'development';
好处是,这种方法本身并不是特定的,但实际上是在广泛的Node.js生态系统中被接受的做法。
另外,我已经实现了一个可重用模块,它允许通过分析CLI参数和NODE_ENVvariables来自动检测环境。 这可能对你的开发机器很有用,因为你可以通过给你的Node.js程序如下这样简单地改变环境: $ node app.js --prod
。
请在detect-environment
的页面上查看更多的细节和用例。