Express : 在 bcrypt.compare 之前使用 await 给出错误

Express : using await before bcrypt.compare gives error

我正在尝试使用 bcrypt 将用户密码与存储的密码进行比较。 但是 Express 给出错误是我在 bcrypt.compare

之前使用 await

这是代码:

app.post ('/users/login', (req, res) => {
    const user = users.find(user=> user.name === req.body.user)
    if (user == null) {
        return res.status(400).send('Can Not find user');
    } else {
        try{
            if ( await bcrypt.compare(req.body.password, user.password)) {
                res.send("Success");
            } else {
                res.send("Incorrect PAssword");
            }
        } catch {
            return res.status(500).send('Some Error has occurred');
        }
    }
});

我收到这个错误:

C:\Data\Ashish\projects\jwtAuthentication\app.js:32
            if ( await bcrypt.compare(req.body.password, user.password)) {
                       ^^^^^^

SyntaxError: Unexpected identifier
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
[nodemon] app crashed - waiting for file changes before starting...

请大家帮忙找错..

此致, 阿希什

你忘记给回调函数添加async了。

app.post ('/users/login', (req, res) => {

应该是:

app.post ('/users/login', async (req, res) => {

Await 仅适用于异步函数。

它不同于chrome控制台。在控制台中可以直接使用 await 关键字,但是在 node.js 的情况下,您需要指定要在其中使用 await 的父函数的异步性质。

更多参考,可以参考this link.