TIM*_*MEX 169 javascript node.js express
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());
});
Run Code Online (Sandbox Code Playgroud)
这是我的应用程序.我目前正在生产中运行它.
但是,有人告诉我NODE_ENV.我是否必须将其添加到此代码中?我该如何添加?
Ed *_*ffe 332
NODE_ENV是一个由快速 Web服务器框架流行的环境变量.运行节点应用程序时,它可以检查环境变量的值,并根据值执行不同的操作.具体地(按照惯例)用于说明特定环境是生产环境还是开发环境.如果在开发环境中运行,常见的用例是运行其他调试或日志记录代码.NODE_ENV
您可以使用以下代码自行访问环境变量,以便您可以执行自己的检查和逻辑:
var environment = process.env.NODE_ENV
或者使用express' app.get('env')(注意:默认为"development")
请注意,如果您没有明确设置NODE_ENV您的环境,它将是undefined.
如何实际设置环境变量因操作系统和操作系统而异,也取决于您的用户设置.
如果要将环境变量设置为一次性,可以从命令行执行此操作:
export NODE_ENV=production$env:NODE_ENV = 'production'从长远来看,你应该坚持下去,这样如果你重新启动它就不会失败 - 而不是列出所有可能的方法来做到这一点,我会让你自己搜索如何做到这一点!
公约dictacted有只有两个你应该使用值NODE_ENV,无论是production或development,全部小写.没有什么可以阻止你添加更多的值,但它可能不是一个好主意,因为我在我使用的许多node_modules中看到了很多这样的代码:
var development = process.env.NODE_ENV !== 'production';
Run Code Online (Sandbox Code Playgroud)
请注意,这是一个非常糟糕的主意,试图设置NODE_ENV从内节点应用程序本身 -如果你这样做将只适用于从它被设置的过程中,这样的事情可能像你期望他们将无法正常工作.不要这样做 - 你会后悔的.
Ali*_*eza 18
NODE_ENV代表快速服务器中的环境变量.
这就是我们设置和检测我们所处环境的方式.
这是非常常见的使用production和development.
组:
export NODE_ENV=production
Run Code Online (Sandbox Code Playgroud)
得到:
你可以使用它 app.get('env')
免责声明: 这个答案可能会惹恼不少人,但必须说出来。无意冒犯,请尝试考虑比开发人员的观点更广泛的观点。
对企业:
这是一个环境变量,首先由框架普及express,后来“泄露”到不同的包和服务中使用。
具体来说express,当该值不是任何值时production,库会进入更宽容、更可调试、记录更多并消耗更多内存的开发模式。
更常见的怪癖是视图渲染库或视图渲染中间件在非生产模式下跳过缓存,期望开发人员在刷新之间修改文件。
最终,npm开始使用这个设置,所以它不会去任何地方。
这是nodejs和express的ops中容易混淆的点之一。这基本上是一种反模式,将行为与环境名称相结合。
这有什么问题吗?
变量的名称将许多运维人员推入陷阱,他们在其中填写NODE_ENV环境名称,并且当他们从相同的发行版中获得与生产中不同的行为和性能时,他们会感到惊讶。
结果是,作为一名顾问,我发现大多数团队必须提供第二个变量,例如OVERRIDE_ENV,,NODE_ENV_NAME以及NODE_ACTUAL_ENV更多类似的废话,并继续与直观地将名称(例如NODE_ENV环境名称)关联起来的操作进行斗争。 。
更好的名字应该是EXECUTION_MODE,但是现在改变这个名字有点太晚了,所以我们坚持这样做,不幸的是,不仅在express......
我认为原始问题包括Express如何使用此环境变量。
Express使用NODE_ENV更改其自己的默认行为。例如,在开发模式下,默认错误处理程序会将堆栈跟踪发送回浏览器。在生产模式下,响应只是Internal Server Error,以避免将实现细节泄漏给世界。
| 归档时间: |
|
| 查看次数: |
175390 次 |
| 最近记录: |