我试图在Node中使用Argon2加密,但是当我尝试加密字符串时,出现此错误:
Cannot read property 'catch' of undefined
我尝试处理argon2.hash
函数返回的诺言中的错误,但是仍然无法正常工作。
到目前为止,这是我的代码:
argon2.hash('password', {type: argon2.argon2id})
.then(hash => {
// do something with the hash
}).catch(err => {
// Handle the error
});
有人可以帮助我解决此错误吗?
答案 0 :(得分:1)
它抛出异常,不返回承诺。因此,没有可以在其上调用then(...)。catch(...)方法的promise对象。
要捕获它,您需要一个实际的try / catch块
从argon2 github page开始,您应该这样做:
const argon2 = require('argon2');
try {
const hash = await argon2.hash("password");
} catch (err) {
//...
}
答案 1 :(得分:1)
在我的情况下,我收到了该错误消息,因为我
a)窥探某种异步方法
spyOn(sut,'myAsyncMethod')
b)之后将.catch()附加到原始方法调用中,却忘记了扩展间谍以返回值/承诺。
退还间谍的诺言解决了我的问题:
spyOn(sut,'myAsyncMethod').and.returnValue(new Promise(resolve=>resolve()));
答案 2 :(得分:0)
请尝试以下操作:
argon2.hash('password', {type: argon2.argon2id})
.then(hash => {
// do something with the hash
}, err => {
// Handle the error
});
then
子句的第二个参数是onError处理程序。