【问题标题】:bcrypt is crashing the app while generating salt or hashed passwordbcrypt 在生成盐或散列密码时使应用程序崩溃
【发布时间】:2019-04-14 17:45:13
【问题描述】:

根据 bcrypt npm 文档,我尝试合并该包,但无法在我的应用程序中使用 bcrypt 包,因此为了单独测试 bcrypt,我创建了示例 js 文件,该文件在执行时也崩溃而没有给出任何错误。下面是我尝试测试的 js 文件。我试图将常量值传递给哈希函数,这也不起作用。

const bcrypt = require('bcrypt');
async function run(){
const saltValue =await bcrypt.genSalt(10);
bcrypt.hash('12345',saltValue)
.then(result => console.log(result))
.catch(error => console.log(error));
}
run();

版本: 节点:9.0.0 npm:'5.5.1' "bcrypt": "^3.0.2",

使用 nodemon,我收到消息:应用程序崩溃 - 开始之前等待文件更改... 在正常执行中它没有显示任何错误。

更新:

如果将 bcrypt 的异步方法更改为同步,那么它工作正常,

    const saltValue = bcrypt.genSaltSync(10);
    const hashed = bcrypt.hashSync('12345',saltValue);

我认为 bcrypt 团队的人可以回答。

更新:这个问题在社区中提出,很少有其他开发者面临同样的问题,有关更多信息,您可以参考链接。

https://github.com/kelektiv/node.bcrypt.js/issues/674

【问题讨论】:

  • 错误信息是什么?
  • 应用程序崩溃 - 在开始之前等待文件更改......正如我在问题中提到的那样,它崩溃而没有给出任何错误:
  • 如果我使用节点执行它,那么它会崩溃而没有显示任何错误或任何消息,例如应用程序崩溃。
  • 如果没有错误,那么它就完成了它的执行。运行文件后节点将退出。
  • 我不知道为什么这个问题被降级了。

标签: node.js npm bcrypt


【解决方案1】:

bcrypt 有时可能很时髦...替换为bcryptjs(无论如何更受欢迎...)

这很好用:

const bcrypt = require('bcryptjs');

async function run() {
  const saltValue = await bcrypt.genSalt(10);
  bcrypt
    .hash('12345', saltValue)
    .then(result => console.log(result))
    .catch(error => console.log(error));
}
run();

【讨论】:

  • 我认为 node.bcrypt.js 和 bcryptjs 是两个不同的包。
  • 有一堆……你具体用的是哪一个?你能在这里链接到 npm 包吗?
  • @ironman 他们是,但他们完成同样的事情。 bcryptjs 只是纯 JavaScript 实现。没有像您使用的那样的依赖项。
  • @ironman 是的,我们知道,但 Sakobu 是对的,bcrypt 确实存在跨不同平台的问题,因为它是合规的。内存为我服务 我在使用树莓派时遇到了问题,所以我改用纯 JavaScript 库。
  • @SakoBu.. 我认为这可能与 bcrypt 包的最新版本有关,在我的机器上它适用于同步方法但不适用于异步。
【解决方案2】:

我有 node v8.11.4 和 bcrypt 4.0.1 版本。

我遇到了同样的错误

[nodemon] 应用程序崩溃 - 启动前等待文件更改...

我的解决方案:

我确实安装了 bcrypt 旧版本。

npm i --save --save-exact bcrypt@2.0.1

效果很好

【讨论】:

    猜你喜欢
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 2019-07-17
    • 2019-07-11
    相关资源
    最近更新 更多