簡體   English   中英

SyntaxError: await 僅在異步中有效 function 我如何使用異步?

[英]SyntaxError: await is only valid in async function how can i use async?

我想在中間件中使用異步等待

但是當我使用我的代碼時,這個錯誤發生了

const refrsh = await User.findOne({ ^^^^^ SyntaxError: await is only valid in async function

我該如何修復我的代碼?

這是我的代碼

            exports.authenticateToken = (req, res, next) => {
              const authHeader = req.headers["authorization"];
              const token = authHeader && authHeader.split(" ")[1];
              if (token == null) return res.sendStatus(401);
              jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, user) => {
                if (err) {
                  const refreshToken = req.body.refreshToken;
                  const refrsh = await User.findOne({
                where: {id:req.body.kakaoid}
                  })
                }
              
                req.user = user;
                next();
              });
            };

只需將(err, user)回調設為async function。 在這種特殊情況下應該可以正常工作:

exports.authenticateToken = (req, res, next) => {
  const authHeader = req.headers["authorization"];
  const token = authHeader && authHeader.split(" ")[1];
  if (token == null) return res.sendStatus(401);
  jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, async (err, user) => {
    if (err) {
      const refreshToken = req.body.refreshToken;
      const refrsh = await User.findOne({
        where: { id: req.body.kakaoid },
      });
    }

    req.user = user;
    next();
  });
};

在匿名回調(err, user) function 之前使用async關鍵字。

jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, async (err, user) => {
  // your code...
  const refrsh = await User.findOne({
    where: {id:req.body.kakaoid}
  });
 // your code...
});

當您想要await貼花 function 時,您需要添加async

 jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, async (err, user) => { ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM