无法使用Windows读取$ process.env.NODE_ENV

时间:2016-12-06 18:56:47

标签: node.js mongodb process

我试图连接到用于生产的mlab数据库和用于开发的本地数据库。据我所知,我的NODE_ENV已投入生产。但由于我无法阅读,我怀疑它以某种方式搞砸了。另外,我一直连接到我的dev db。

我运行我的mongod实例。在另一个cli中,导航到我的app文件夹,其中包含我的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:password@ds55555.mlab.com: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');

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

1 个答案:

答案 0 :(得分:1)

所以,我在这篇评论的一个条款中找到了答案 https://stackoverflow.com/a/9250168/5574017 显然,在Windows中,set NODE_ENV=production应该在您所在的目录中执行app.js

我仍然无法阅读$ process.env.NODE_ENV

但我可以使用set阅读,然后搜索NODE_ENV

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

谢谢,伙计们。