Javascript 未处理的PromisejectionWarning:|弃用警告:|猫鼬5

Javascript 未处理的PromisejectionWarning:|弃用警告:|猫鼬5,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,在node.js中构建基本实践聊天应用程序时,我遇到了上述问题 My express.js代码: 这是全部错误: 我试着加上{useMongoClient:true},这家伙也是。结果发现,正如他在《猫鼬5》中所做的那样,这是没有必要的(也无济于事) 我进一步研究了添加: mongoose.Promise = global.Promise 我也犯了同样的错误 这个问题也无济于事 我只想回到早期版本的猫鼬,但我很想知道解决方案是什么 试试这个代码 你应该得到一个像蓝鸟这样的第三方承诺库。 见下文

在node.js中构建基本实践聊天应用程序时,我遇到了上述问题

My express.js代码: 这是全部错误: 我试着加上{useMongoClient:true},这家伙也是。结果发现,正如他在《猫鼬5》中所做的那样,这是没有必要的(也无济于事)

我进一步研究了添加:

mongoose.Promise = global.Promise
我也犯了同样的错误

这个问题也无济于事

我只想回到早期版本的猫鼬,但我很想知道解决方案是什么

试试这个代码


你应该得到一个像蓝鸟这样的第三方承诺库。 见下文:

mongoose.Promise = require('bluebird');
DBURL = process.env.DBURL;

var options = {
useMongoClient: true,
  socketTimeoutMS: 0,
  keepAlive: true,
  reconnectTries: 30
};

mongoose.connect(DBURL, options);
db = mongoose.connection;
db.on('error', err => {
  console.log('There was a db connection error');
});
db.once('connected', () => {
  console.log('Successfully connected to ' + DBURL);
});
db.once('disconnected', () => {
  console.log('Successfully disconnected from ' + DBURL);
});
process.on('SIGINT', () => {
  mongoose.connection.close(() => {
    console.log('dBase connection closed due to app termination');
    process.exit(0);
  });
});
Bluebird将帮助您删除弃用错误。我希望这对您有所帮助

请使用:

{ useNewUrlParser: true }
而不是:

useMongoClient: true

用try-catch包装代码怎么样

 var mongoose = require('mongoose')
 var dbUrl = 'mongodb://ChatbotAdmin:ChatbotAdmin@ds239177.mlab.com:39177/learning_node'

 try {
   mongoose.connect(dbUrl, { useMongoClient: true })
 } catch(e) { console.log(e.message) } 

我也遇到了一些类似的问题。每当我使用mlab mongodb时,这个问题就会出现,但每当我使用本地db时,这个问题就会出现。我通过了一些选项来调整mongoose,如mongoose官方网站所述

常量选项={
useNewUrlParser:true,
autoIndex:false,//不生成索引
重新连接尝试:Number.MAX_值,//永不停止尝试重新连接
重新连接间隔:500,//每500毫秒重新连接一次
poolSize:10,//最多维护10个套接字连接
//如果未连接,则立即返回错误,而不是等待重新连接
bufferMaxEntries:0,
connectTimeoutMS:10000,//10秒后放弃初始连接
socketTimeoutMS:45000,
系列:4//使用IPv4,跳过尝试IPv6
};
connect(my_mongo_url,选项);

不知何故,这为我解决了这个问题。

我要说的是,代码的其余部分没有使用承诺。当您从中得到任何结果时,请在您的代码中处理承诺mongoose@ManjeetThakur这还不清楚。另外,正如我刚才提到的,我还没有使用任何承诺。真正的错误是
MongoNetworkError:connection0到ds239177.mlab.com:39177closed
,它来自mongodb core。@MikaS,确切的意思是什么?我已经编辑了我的答案,请检查这是否适用于您。您能告诉我您的问题吗?我通过了所述的调整mongoose的选项
{ useNewUrlParser: true }
useMongoClient: true
 var mongoose = require('mongoose')
 var dbUrl = 'mongodb://ChatbotAdmin:ChatbotAdmin@ds239177.mlab.com:39177/learning_node'

 try {
   mongoose.connect(dbUrl, { useMongoClient: true })
 } catch(e) { console.log(e.message) }