Node.js argon2 包不会 Return 字符串

Node.js argon2 Package Will Not Return String

我正在编写一个需要密码散列的网络应用程序。我正在使用 npm 中的 argon2 包来实现这一点。

下面是我写的一个函数,它是 return 一个字符串,例如 $argon2i$v=19$m=4096,t=3,p=1$QC3esXU28vknfnOGCjIIaA$f/2PjTMgmqP1nJhK9xT0bThniCEk28vX2eY6NdqrLP8,但是当值是 returns Promise { <pending> } console.log(ed).

密码是:

async function hashPassword(password) {
    try {
        const hash = await argon2.hash(password);
        return hash;
    } catch {
        console.log('Error');
    }
}
const hashedPassword = hashPassword('password');
console.log(hashedPassword);

所以,console.log() 的输出是 Promise { <pending> }

有人可以帮我解决这个问题吗?

非常感谢。

您的代码无法正常工作,因为您试图在 Promise 解析之前获取它的值。要解决这个问题,只需等待 Promise 到 return 一个值。您可以通过更改代码以使用 then 函数 (MDN Docs link).

来做到这一点
async function hashPassword(password) {
    try {
        return await argon2.hash(password)
    } catch {
        console.log('Error');
    }
}

hashPassword('password').then((hashedPassword) => {
    console.log(hashedPassword);
});

调用 hashPassword() 时需要 await:

async function hashPassword(password) {
    try {
        const hash = await argon2.hash(password);
        return hash;
    } catch {
        console.log('Error');
    }
}
const hashedPassword = await hashPassword('password');
console.log(hashedPassword);