正如所指出的那样,驱动程序的 3.1.0-beta4 版本因为外观而早早得到了"released into the wild" . 该版本是正在进行的工作的一部分,以支持MongoDB 4.0即将发布的版本中的新功能,并进行一些其他API更改 .
触发当前警告的一个此类更改是 useNewUrlParser 选项,因为有关如何传递连接URI实际工作的一些更改 . 稍后会详细介绍 .
直到事情"settle down",它至少可能是advisable to "pin"至 3.0.x 版本的次要版本:
"dependencies": {
"mongodb": "~3.0.8"
}
这应该会阻止 3.1.x 分支安装在节点模块的"fresh"上 . 如果你已经安装了一个"latest"版本"beta"版本,那么你应该清理你的软件包(和 package-lock.json ),并确保将其降低到 3.0.x 系列版本 .
至于实际使用"new"连接URI选项,主要限制是在连接字符串上实际包含 port :
const { MongoClient } = require("mongodb");
const uri = 'mongodb://localhost:27017'; // mongodb://localhost - will fail
(async function() {
try {
const client = await MongoClient.connect(uri,{ useNewUrlParser: true });
// ... anything
client.close();
} catch(e) {
console.error(e)
}
})()
这是新代码中的更多"strict"规则 . 重点是当前代码本质上是"node-native-driver"(npm mongodb)存储库代码的一部分,"new code"实际上是从mongodb-core库中导入"underpins" "public"节点驱动程序 .
通过向新代码添加选项来添加"option"的转换是"ease"转换,以便在添加选项和清除弃用警告的代码中使用较新的解析器(实际上基于url),从而验证您的连接字符串传入实际上符合新解析器期望的内容 .
在将来的版本中,将删除“遗留”解析器,然后即使没有该选项,新解析器也将简单地使用 . 但到那时,预计所有现有代码都有充分的机会根据新解析器所期望的内容测试现有连接字符串 .
因此,如果您希望在发布时使用新的驱动程序功能,请使用可用的 beta 及后续版本,理想情况下,通过启用 MongoClient.connect() 中的 useNewUrlParser 选项,确保提供对新解析器有效的连接字符串 .
如果您实际上不需要访问与MongoDB 4.0版本预览相关的功能,请将版本固定为 3.0.x 系列,如前所述 . 这将按照文档和"pinning"工作,这确保 3.1.x 版本不会超过预期的依赖关系,直到您确实要安装稳定版本 .