使用bcrypt-node时未显示回调错误

时间:2014-01-09 14:00:42

标签: javascript node.js

我创建了一个名为encrypt.js的节点库文件。

其中包括使用bcrypt-nodejs

创建的一些函数
var bcrypt = require('bcrypt-nodejs');

exports.cryptPassword = function(password, callback) {
    bcrypt.genSalt(10, function(err, salt) {
        if (err) return callback(err);
        else {
            bcrypt.hash(password, salt, function(err, hash) {
                return callback(err, hash);
            });
        }
    });
};

exports.comparePassword = function(password, userPassword, callback) {
    bcrypt.compare(password, userPassword, function(err, isPasswordMatch) {
        if (err) return callback(err);
        else return callback(null, isPasswordMatch);
    });
};

当我现在使用cryptPassword文件中的server.js时,它会显示来自bcrypt-nodejs库的错误,说明“no callback function was given

我在通话中添加了一个功能,如下所示

var encryptedPassword =  encrypt.cryptPassword(req.body.user.password, function (err, salt){
    if(err) {throw err};
    console.log('hlllll');
});

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:13)

语法:bcrypt.hash(data, salt, progress, cb)

你必须有两个回调。

记录在这里:

https://npmjs.org/package/bcrypt-nodejs


更新

您可以使用包bcrypt代替bcrypt-nodejs

您的代码将起作用:

bcrypt.hash(password, salt, function(err, hash) {
   return callback(err, hash);
});

答案 1 :(得分:1)

你可以实际使用bcyrpt-nodejs,如果那是你喜欢的,但你必须编辑bCrypt.js中的以下部分

if(!callback) {
    throw "No callback function was given."
}

并将其替换为

if(typeof callback == 'undefined') {
    callback = progress;
    progress = null;
}

然后在你的代码中,只有这个;

 require('bcrypt').hash(values.password,null,null,function passwordEncrypted(err,password){

答案 2 :(得分:0)

使用bcyrpt.compareSync而不是bcypt.compare。它不需要回调