【问题标题】:saslprep warning when using MongoClient.connect()使用 MongoClient.connect() 时的 saslprep 警告
【发布时间】:2019-09-19 14:22:29
【问题描述】:

我正在编写 NodeJS/express API 并在连接到 mongo 服务器时遇到以下警告:

Warning: no saslprep library specified. Passwords will not be sanitized

在文档或 github/google 中未发现此警告 - 是缺少操作系统 (linux) 库还是节点包?

这是连接代码示例:

const client = await MongoClient.connect(`mongodb://${auth[0]}:${auth[1]}@${url}/admin`, {
    useNewUrlParser: true
});
this.db = client.db(database);

我怎样才能摆脱它?

其他信息:

Mongodb 服务器:docker mongo:latest,截至目前已解析为 4.0.4

mongodb 库:3.1.9

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    只需安装saslprep 包,警告就会消失。

    mongodb 包会查找saslprep 包,但没有它也可以工作;这是一个可选的依赖项。

    如果你查看 mongodb 源码:

    let saslprep;
    try {
      saslprep = require('saslprep');
    } catch (e) {
    

    然后:

    if (!saslprep) {
        console.warn('Warning: no saslprep library specified. Passwords will not be sanitized');
    }
    

    【讨论】:

    • 它对我不起作用,因为我使用 webpack 进行捆绑。对于 webpack,您需要另外将 saslprep 添加到“外部”或显式导入。
    • 亲爱的 Michael,我建议您在发送报告之前检查 saslprep 源代码,看看他们如何“创新地”使用“code-points.mem”检查和 require。带有外部组件并包括来自外部 webpack 的 saslprep 的配方正是由于库实现导入的原因(请参阅github.com/reklatsmasters/saslprep/commit/…)。库版本 1.0.1 及以下版本不存在该问题,并且在 1.0.2 中引入,因此对于 1.0.1,您的评论方式就足够了(即安装库)。谢谢。
    • 顺便说一句,StackOverflow 上有一个重复的线程,它有带有外部和解释的解决方案,对于任何感兴趣的人:stackoverflow.com/questions/58697934/…。免责声明:我还没有发明解决方案。
    • @metamaker 你这个天才!我以前没有遇到过这种问题,那个外部技巧救了我。我一直在努力解决这个问题几个小时,现在终于解决了谢谢你
    【解决方案2】:

    请在您的应用程序中使用此命令。它对我有用。希望对你有帮助。

    npm install saslprep --save
    

    【讨论】:

      猜你喜欢
      • 2019-05-06
      • 1970-01-01
      • 2023-03-12
      • 2017-03-23
      • 2017-11-19
      • 2012-12-14
      • 2017-05-05
      • 2016-09-02
      • 2013-12-05
      相关资源
      最近更新 更多