bcrypt在生成盐或哈希密码时导致应用程序崩溃

5
根据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();

版本: node: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

错误信息是什么? - Darkrum
1
如果没有错误,那么它就完成了执行。Node在运行文件后将退出。 - Darkrum
你的控制台日志周围不应该有花括号吗?抱歉,我已经有一段时间没有使用过这样的 Promise 了。我已经转换到使用带有 try/catch 的 async/await 来处理 Promise。 - Darkrum
2
我不知道为什么这个问题被评为负分。 - ironman
好的,那么有些奇怪,因为它应该会在控制台输出一些东西。你能否在整个文件中使用console.log("testing")来跟踪它的执行过程。 - Darkrum
显示剩余14条评论
3个回答

3

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是两个不同的软件包。 - ironman
有很多个... 你具体使用的是哪一个?能在这里提供npm软件包链接吗? - SakoBu
@ironman,它们的功能是相同的。bcryptjs 只是纯的 JavaScript 实现,不像你使用的那个有任何依赖。 - Darkrum
@ironman 是的,我们知道,但 Sakobu 是正确的,因为 bcrypt 在不同平台上存在问题,因为它是编译的。如果我没记错的话,在树莓派上使用它时我遇到了问题,所以我改用了纯 JavaScript 库。 - Darkrum
@SakoBu.. 我认为这可能与bcrypt包的最新版本有关,在我的机器上同步方法可以正常工作,但异步方法不能。 - ironman
显示剩余5条评论

0

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

我得到了相同的错误。

[nodemon] 应用程序崩溃 - 等待文件更改后再开始..

我的解决方案:

我安装了旧版本的bcrypt。

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

它运行良好


0
我刚遇到了这个问题,对我来说,我只需要卸载并重新安装bcrypt就解决了。
npm uninstall bcrypt

npm install bcrypt

我猜它可能出了点问题,所以重新安装它重新编译了一下,修复了之前的错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接