这是我目前在生产环境中运行的应用。
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
专门用于(按惯例)说明特定环境是生产还是开发环境。如果在开发环境中运行,一个常见的用例是运行额外的调试或记录代码。
访问 NODE_ENV
您可以使用以下代码自己访问环境变量,以便执行自己的检查和逻辑:
var environment = process.env.NODE_ENV
如果您无法识别值(value),请假设生产:
var isDevelopment = environment === 'development'
if (isDevelopment) {
setUpMoreVerboseLogging()
}
您也可以使用 express 的 app.get('env')
函数,但请注意这是 不推荐,因为它是默认的到 "development"
,这可能会导致开发代码在生产环境中意外运行 - 如果未设置此重要值(或者如果首选,默认为生产环境),如果您的应用程序抛出错误会更安全逻辑同上)。
请注意,如果您没有为您的环境显式设置 NODE_ENV
,如果您从 访问它,它将是
>process.env,没有默认值。undefined
设置 NODE_ENV
如何实际设置环境变量因操作系统而异,也取决于您的用户设置。
如果您想将环境变量设置为一次性,您可以从命令行进行:
- linux & mac:
export NODE_ENV=production
- windows:
$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/