当前位置: 首页 > 面试题库 >

在app.configure中表达和使用开发与生产的Node.js

郜驰
2023-03-14
问题内容

让表达方式知道我所处环境的最简单方法是什么?例如,我想根据我所在的环境执行以下操作以连接到Redis。可以从命令行完成吗?

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
  var r = require("redis").createClient(6379,'127.0.0.1');
});
app.configure('production', function(){
  app.use(express.errorHandler());
  r = redis.createClient(6379,'46.137.195.230', { detect_buffers: true });
});

问题答案:

您的方法是可以的,但是您可以做一些更通用的事情,例如将Redis的配置数据存储在文件中,或者像参数一样传递主机和端口:

node app.js REDIS_HOST REDIS_PORT

然后在您的应用中,您可以使用process.argv来抓取它们:

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
  var r = require("redis").createClient(process.argv[2], process.argv[3]);
});
app.configure('production', function(){
  app.use(express.errorHandler());
  var r = require("redis").createClient(process.argv[2], process.argv[3], { detect_buffers: true });
});

更新:

Express可以通过查看NODE_ENV变量(process.env.NODE_ENV)来了解您所处的环境:https
:
//github.com/visionmedia/express/blob/master/lib/application.js#L55

您可以像这样启动应用程序时设置变量:(NODE_ENV=production node app.js推荐),在Express代码之前在节点应用程序中手动设置process.env.NODE_ENV,或者像Ricardo所说的那样将环境变量放入〜/
.profile中。



 类似资料:
  • 在本地电脑上可以搭建一套学习与开发网站的运行环境。有很多一键安装的集成环境,比如 Windows 上的 WAMP ,macOS 上的 MAMP。这些集成环境可以让你快速开始,但是不够灵活,也存在很多问题。更重要的是我们并没学到什么,我推荐可以先在本地用虚拟机的方式去手工搭建一个 LEMP 环境。 本书会利用 Vagrant 管理虚拟机,创建一台 Linux 类型的虚拟机,在上面手工去安装并配置环境

  • 问题内容: 我找到了一些代码,他们在不使用Express的情况下设置了Express ,我想知道,在不使用环境说明符的情况下使用和不使用它之间的区别是什么? 换句话说,这有什么区别: 还有这个: 谢谢。 问题答案: 根据文档,它是可选的,并且出于遗留原因保留。在您的示例中,这两段代码完全没有区别。 http://expressjs.com/api.html#app.configure 2015年更

  • 问题内容: 我有一个GlassFish / j2ee应用程序,我在一个盒子上进行开发,而生产是一个远程盒子。我有一个制作文件的功能,根据我的开发箱或生产环境,我需要文件的位置不同。什么是自动切换方式,所以我不必根据部署源文件来编辑源文件? 问题答案: 最简单的方法是定义一个系统属性,该属性指定数据的文件系统位置。生产应用服务器将定义一个值(在启动脚本中使用),而开发应用服务器将定义另一个值。您的应

  • 问题内容: 在Python中,通过 生成器表达式 创建生成器对象与使用 yield 语句之间有什么区别吗? 使用 yield : 使用 生成器表达式 : 这两个函数都返回生成器对象,这些对象生成元组,例如(0,0),(0,1)等。 一个或另一个有什么优势吗?有什么想法吗? 谢谢大家!这些答案中有很多不错的信息和进一步的参考! 问题答案: 两者之间只有细微的差别。您可以使用该模块自己检查这种事情。

  • 问题内容: 我有2个Dockerfile,1个用于dev,1个用于prod: 产品: 和DEV: 我想将这两个合并为一个,因为维护2个Dockerfile是一个坏习惯 主要区别在于,在开发人员中,我从事实用的图像工作,而在产品中,我从事图像工作,这大大减少了二进制文件的大小。 看来我可以在Dockerfile中使用多个阶段,并在构建时指定阶段名称: 但是,如果这样做,我不知道如何在第一阶段有条件地

  • 更新时间:2019-08-31 11:22:33 服务分为生产环境与开发环境,未发布的服务认为是在开发环境,发布后的服务为生产环境的服务。生产环境的服务才可以在web工作台,或代码工程内调用。生产环境的服务不可再进行修改,需要在开发环境中修改部署发布服务后,才可生效。 服务运维监控功能是为生产环境的服务提供的,您可以在此查看生产环境服务的调用量及运行日志。