- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
这是我目前在生产环境中运行的应用。
var app = express();
app.set('views',settings.c.WEB_PATH + '/public/templates');
app.set('view engine','ejs');
app.configure(function(){
app.use(express.favicon());
app.use(express.static(settings.c.WEB_PATH + '/public'));
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.methodOverride());
app.use(express.session({
cookie:{ domain:"."+settings.c.SITE_DOMAIN, maxAge:1440009999},
secret:'hamster',
store: r_store,
}));
app.use(useragent.express());
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
});
现在我已经了解了 NODE_ENV
并想使用它。我该怎么做?
最佳答案
NODE_ENV
是 environment variable由express 流行起来网络服务器框架。当 Node 应用程序运行时,它可以检查环境变量的值并根据该值做不同的事情。 NODE_ENV
专门用于(按惯例)说明特定环境是生产还是开发环境。如果在开发环境中运行,一个常见的用例是运行额外的调试或记录代码。
您可以使用以下代码自己访问环境变量,以便执行自己的检查和逻辑:
var environment = process.env.NODE_ENV
如果您无法识别值(value),请假设生产:
var isDevelopment = environment === 'development'
if (isDevelopment) {
setUpMoreVerboseLogging()
}
您也可以使用 express 的 app.get('env')
函数,但请注意这是 不推荐,因为它是默认的到 "development"
,这可能会导致开发代码在生产环境中意外运行 - 如果未设置此重要值(或者如果首选,默认为生产环境),如果您的应用程序抛出错误会更安全逻辑同上)。
请注意,如果您没有为您的环境显式设置 NODE_ENV
,如果您从 访问它,它将是
undefined
>process.env
,没有默认值。
如何实际设置环境变量因操作系统而异,也取决于您的用户设置。
如果您想将环境变量设置为一次性,您可以从命令行进行:
export NODE_ENV=production
$env:NODE_ENV = 'production'
从长远来看,您应该坚持这一点,以便在重新启动时不会取消设置 - 而不是列出所有可能的方法来做到这一点,我会让您自己搜索如何做到这一点!
约定规定您应该为 NODE_ENV
使用两个“主要”值,production
或 development
,全部小写。没有什么可以阻止您使用其他值(test
,例如,如果您希望在运行自动化测试时使用一些不同的逻辑),但请注意,如果您使用的是第三方模块,他们可能会明确地与 'production'
或 'development'
进行比较以确定要做什么,因此可能会出现不立即明显的副作用。
最后,请注意,尝试从 Node 应用程序本身内部设置 NODE_ENV
是一个非常糟糕的主意 - 如果你这样做,它将只应用于设置它的进程,所以事情可能不会像你期望的那样工作。不要这样做 - 你会后悔的。
关于javascript - 什么是 NODE_ENV 以及如何在 Express 中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16978256/
我有 an issue在生产环境中使用 webpack,我对在生产环境中运行 webpack 的不同方式感到困惑(我使用的是 Windows)。 谁能解释一下它们之间的区别: 一:命令行 webpac
我正在尝试使用 将环境变量 $NODE_ENV 设置为“生产” export NODE_ENV=production 但是当我尝试运行我的 gulp 任务时,它说变量未定义: if((process.
正如标题,我使用的是 docker ruby 2.3.5 (ubuntu) 环境,尽管我已经设置了 NODE_ENV=development,当我尝试拦截 process.env.NODE_ENV
我有一个在 Linux 上运行良好的应用程序,但是当我在 Windows 上执行它时出现此错误。 'NODE_ENV' is not recognized as an internal or exte
我想使用 webpack 制作我的应用程序的生产版本: "scripts": { "build": "webpack --mode production", }, 在我的 webpack.
这可能是一个愚蠢的问题,但我在任何地方都找不到直接答案,所以我宁愿问它,也不愿继续有这个疑问。 我正在阅读有关设置 Node 环境的信息。答案this question说我们不应该在 Node 应用程
我在我的 reactjs 解决方案中使用 gulp 并想设置 NODE_ENV,我试过这个: gulp.task('set-dev-node-env', function() { return
Python 中是否有等效的 NODE_ENV? 我想根据执行环境将 JSON 配置动态加载到 python 应用程序。在 nodeJs 中,我通过使用 process.env.NODE_ENV 来做
我正在尝试设置一个标志来通知我的代码是在生产中还是在开发中。到目前为止,我已经看到: 在 VS Code 的 launch.json 中: { "configurations": { "env": "
我正在使用 node.js 进行开发,并希望同时考虑生产和开发环境。我发现在运行 node.js 服务器时设置 NODE_ENV 可以完成这项工作。但是,当我尝试在 package.json 脚本中设
我正在尝试通过更改和测试变量 NODE_ENV 的值来实现我的代码在不同 Node.js 环境中正常工作的测试。 我一直在努力理解为什么下面的代码: process.env.NODE_ENV = un
请,这里的答案都是指一个名为 process.env.NODE_ENV 的东西,但是命令行中的 echo $process.env.NODE_ENV 不起作用。有什么想法吗? 最佳答案 使用 echo
我正在尝试为 Node.js 应用程序设置环境。但我每次都会收到这个错误。 "NODE_ENV" is not recognized as an internal or external comman
如何将 NODE_ENV 作为参数传递给 npm run 命令? 示例 package.json 文件: NODE_ENV=8080 ... "script": { "star
在我的 package.json 中,我有一个 build 脚本集来构建我的下一个项目,如下所示: "build": "echo\"$NODE_ENV\"&& NODE_ENV=$NODE_ENV n
我正在移动我的一些 firebase-queue worker 到 Firebase 函数。我用过 process.env.NODE_ENV根据我运行它们的环境为工作人员设置一些配置。有没有办法设置N
我正在使用 supertest 测试我的 API 我想检查我的 CSRF token 保护是否有效,然后在其他测试中禁用它。 为此,我设置了 NODE_ENV至 test或 not_test app.
这是我的index.js 文件: var express = require('express'); var app = express(); var compression = require('c
我想用 React 和其他代码构建我的 js 代码,并将其缩小到一个文件。 它运行良好,但我得到的是react的开发版本 看起来您正在使用 React 开发版本的缩小副本 现在我知道我需要添加NODE
每次我在配置文件中看到变量 process.env.NODE_ENV 总是困扰我,尤其是 webpack.config.js。我在哪里可以找到这个?因为有时我想将它的值更改为 production 而
我是一名优秀的程序员,十分优秀!