[英]SyntaxError: await is only valid in async function how can i use async?
i want to use async await in middleware我想在中间件中使用异步等待
but when i use my code this error occure但是当我使用我的代码时,这个错误发生了
const refrsh = await User.findOne({ ^^^^^ SyntaxError: await is only valid in async function const refrsh = await User.findOne({ ^^^^^ SyntaxError: await is only valid in async function
how can i fix my code?我该如何修复我的代码?
this is my code这是我的代码
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();
});
};
Simply make the (err, user)
callback an async
function.只需将(err, user)
回调设为async
function。 It should work out alright in this particular case:在这种特殊情况下应该可以正常工作:
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();
});
};
Use async
keyword before anonymous callback (err, user)
function.在匿名回调(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...
});
You need to add async
when decalre function that you want await
:当您想要await
贴花 function 时,您需要添加async
:
jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, async (err, user) => { ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.