var express = require('express');
var app = express();
var db_url;
if(app.get('env') == "development"){
 db_url = 'mongodb://127.0.0.1:27017/localhost';
}else{
 db_url = 'something else';
}


console.log(app.get('env'));

app.get('env')表示什么意思?我将代码部署到实时服务器时,它仍然显示development

最佳答案

您需要告诉您您处于生产模式;参见part of the Express docs


  在开发中,通常会在交互式外壳程序中设置环境变量,例如通过使用export或.bash_profile文件。但是一般来说,您不应该在生产服务器上执行此操作;而是使用操作系统的初始化系统(系统化或Upstart)。下一部分提供了有关一般使用初始化系统的更多详细信息,但是设置NODE_ENV对性能非常重要(且易于实现),因此此处突出显示。
  
  对于Upstart,在作业文件中使用env关键字。例如:

# /etc/init/env.conf
 env NODE_ENV=production

  
  有关更多信息,请参见Upstart简介,菜谱和最佳实践。
  
  对于systemd,请在您的单元文件中使用Environment指令。例如:

# /etc/systemd/system/myservice.service
Environment=NODE_ENV=production

  
  有关更多信息,请参见在系统单位中使用环境变量。
  
  如果使用的是StrongLoop Process Manager,则在将StrongLoop PM作为服务安装时,还可以设置环境变量。


如果需要,还可以在JavaScript文件中设置process.env.NODE_ENV

10-06 07:43
查看更多