【问题标题】:Node.js: How to handle New URL Parser Deprecation Warning? [duplicate]Node.js:如何处理新的 URL 解析器弃用警告? [复制]
【发布时间】:2019-04-19 21:35:04
【问题描述】:

当我使用 mongoose 运行我的 node.js 服务器并表达时,我收到以下警告:

(node:27809) DeprecationWarning: 当前 URL 字符串解析器是 已弃用,并将在未来的版本中删除。要使用新 解析器,将选项 { useNewUrlParser: true } 传递给 MongoClient.connect。

当我将 { useNewUrlParser: true } 传递给我的连接选项时,我得到:

(node:27799) UnhandledPromiseRejectionWarning: TypeError: callback is 不是 $initialConnection.$initialConnection.then 的函数 (节点:27799)UnhandledPromiseRejectionWarning:未处理的承诺 拒绝。此错误源于在异步内部抛出 没有 catch 块的函数,或者通过拒绝一个承诺 不使用 .catch() 处理。 (拒绝 ID:1)(节点:27799)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。在 未来,未处理的承诺拒绝将终止 具有非零退出代码的 Node.js 进程。

这是我的代码:

//Mongoose Connection & Validation Process

mongoose.connect("mongodb://12.345.65.89:3000/db",
         {user: 'user', pass: 'p@ssword'},{ useNewUrlParser: true });

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

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

我该如何解决这个问题?我认为这与我如何在 useNewUrlParser 之前传递用户和密码有关,但我必须这样做,否则我会因为在密码中使用 @ 而出错:/ 有什么想法吗?

谢谢!

【问题讨论】:

标签: javascript node.js mongodb express mongoose


【解决方案1】:
const db = require('./config/keys').mongoURI;
//mongoURI: 'mongodb://localhost:27017/mernApp'

mongoose
    .connect(db, { useNewUrlParser: true })
    .then(() => console.log("MongoDB connected"))
    .catch(err => console.log(err));

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但它没有解释为什么或如何回答这个问题。请include an explanation for your code,因为这确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
猜你喜欢
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 2020-11-17
  • 2020-01-22
  • 1970-01-01
  • 2021-11-22
相关资源
最近更新 更多