2016-12-06 381 views
0

我试图连接到生产的mlab db和我的本地数据库进行开发。据我可以告诉我的NODE_ENV已设置为生产。但是因为我看不懂,所以我怀疑它是以某种方式搞砸了。另外,我一直连接到我的开发数据库。

我运行我的mongod实例。在另一个cli中,导航到我的应用程序文件夹,该文件夹包含我的app.js文件。我正在遵循一个教程,说运行

process.env.NODE_ENV 

但是,我知道这个命令不被识别。所以我检查我的NODE_ENV变量使用:set 我得到NODE_ENV=production,我以前设置。然而。当我使用npm start运行我的应用时,我仍然连接到我的开发服务器。这里是我的db.js code

var mongoose = require('mongoose'); 
var gracefulShutdown; 
var dbURI = 'mongodb://localhost/Loc8r'; 

if(process.env.NODE_ENV == 'production'){ 
console.log('we are in production'); 
    dbURI = 'mongodb://username:[email protected]:55555/dbname' 
} 
mongoose.connect(dbURI); 


// to address mongoose closing issues in windows 
var readLine = require('readline'); 
if (process.platform === "win32"){ 
    var rl = readLine.createInterface({ 
     input: process.stdin, 
     output: process.stdout 
    }); 
    rl.on ("SIGINT", function(){ 
     process.emit ("SIGINT"); 
    }); 
} 
// close Mongoose connection, passing in an anonymous function to run when closed 
gracefulShutdown = function(msg, callback){ 
    mongoose.connection.close(function(){ 
     console.log("Mongoose disconnected through " + msg); 
     callback(); 
    }); 
}; 

mongoose.connection.on('connected', function(){ 
    console.log('Mongoose connected to ' + dbURI); 
}); 

mongoose.connection.on('error', function(err){ 
    console.log('Mongoose connection error: ' + err); 
}); 

mongoose.connection.on('disconnected', function(){ 
    console.log('Mongoose disconnected'); 
}); 

// for nodemon termination 
process.once('SIGUSR2', function(){ 
    gracefulShutdown('nodemon restart', function(){ 
     process.kill(process.pid, 'SIGUSR2'); 
    }); 
}); 

// for app termination 
process.on('SIGINT', function(){ 
    gracefulShutdown('app termination', function(){ 
     process.exit(0); 
    }); 
}); 

// for HEroku termination 
process.on('SIGTERM', function(){ 
    gracefulShutdown('Heroku app shutdown', function(){ 
     process.exit(0); 
    }); 
}); 

require('./locations'); 

不知道从哪里开始寻找。我用尽了我的谷歌搜索。

回答

0

所以,我发现这条评论的条款在回答 https://stackoverflow.com/a/9250168/5574017 显然,在Windows中,set NODE_ENV=production应该在你房子app.js

目录执行我仍然无法读取我的$ process.env.NODE_ENV

但我可以用set来读取它,然后搜索NODE_ENV

对不起,如果我浪费了你的时间。

谢谢,伙计们。