没有callback提供给pbkdf2

我有这个代码,它在我的开发计算机上工作得很好,但不在服务器上。

db.admin.verify([req.body.username]).then(function(data){ if (data[0].length == 0){ //if there is no user with that username console.log("bad username"); res.status(401).send('Incorrect username or password'); } var creds = data[0][0]; return myCrypt.pbkdf2(req.body.password, creds.salt).then(function(key){ if (creds.password === key.toString('base64')){ //correct password console.log("correct pw"); return db.admin.getUser([req.body.username]) } else { console.log("bad pw"); res.status(401).send('Incorrect password or username'); } }); }).then(function(dbData){ var user = dbData[0][0]; var profile = { firstName: user.firstName, lastName: user.lastName, email: user.email, username: user.username, type: user.type, id: user.adminId }; var token = jwt.sign(profile, 'secrets'); res.json({token:token, user: profile}); }).catch(function(err){ console.log('ERROR'); console.log(err); throw err; res.status(500).json(err); }); 

它应该通过比较散列来从数据库validation用户。 我使用node.jsencryption库实现了pbkdf2包装在一个Q promise中。

 module.exports.pbkdf2 = function(password, salt) { var pbkdf2 = Q.denodeify(crypto.pbkdf2); return pbkdf2(password, salt, 4096, 512, 'sha512') }; 

当我尝试在服务器上运行它时,会返回[Error: No callback provided to pbkdf2] ,从promises catch函数中捕获。

我已经尝试复制我的整个项目从开发到服务器,以防万一我没有任何依赖安装,但错误仍然抛出。

事实certificate,pbkdf2函数签名在节点0.10和0.12之间发生冲突,并且没有收到callback,因为我传递的是摘要而不是函数callback。 更新nodejs到0.12解决了这个问题。