gpt4 book ai didi

javascript - 什么是 NODE_ENV 以及如何在 Express 中使用它?

转载 作者:IT老高 更新时间:2023-10-28 13:16:51 28 4
gpt4 key购买 nike

这是我目前在生产环境中运行的应用。

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_ENVenvironment variableexpress 流行起来网络服务器框架。当 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,如果您从 访问它,它将是 undefined>process.env,没有默认值。

设置 NODE_ENV

如何实际设置环境变量因操作系统而异,也取决于您的用户设置。

如果您想将环境变量设置为一次性,您可以从命令行进行:

  • linux & mac:export NODE_ENV=production
  • windows:$env:NODE_ENV = 'production'

从长远来看,您应该坚持这一点,以便在重新启动时不会取消设置 - 而不是列出所有可能的方法来做到这一点,我会让您自己搜索如何做到这一点!

约定规定您应该为 NODE_ENV 使用两个“主要”值,productiondevelopment,全部小写。没有什么可以阻止您使用其他值(test,例如,如果您希望在运行自动化测试时使用一些不同的逻辑),但请注意,如果您使用的是第三方模块,他们可能会明确地与 'production''development' 进行比较以确定要做什么,因此可能会出现不立即明显的副作用。

最后,请注意,尝试从 Node 应用程序本身内部设置 NODE_ENV 是一个非常糟糕的主意 - 如果你这样做,它将只应用于设置它的进程,所以事情可能不会像你期望的那样工作。不要这样做 - 你会后悔的。

关于javascript - 什么是 NODE_ENV 以及如何在 Express 中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16978256/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com