프로그래밍/알고리즘, 프로그래밍 언어
async을 사용했지만 콜백함수의 await에서 에러가 나는 경우
제이콥J
2021. 11. 10. 17:05
SyntaxError: await is only valid in async function
서버 API 제작 중, 함수 내에서 await을 사용할 수 없다는 에러 메세지가 발생했다.
함수 앞에 async를 붙였는데도 말이다.
원인 및 해결방안
- 함수 앞에는 async 를 기재했지만 에러 발생
- 함수 내부의 콜백함수에서 await 문법을 사용하기 위해서는, 콜백함수 앞에도 async를 붙여줘야 함
// 에러 코드
module.exports = async (req, res) => { // 함수 앞에 async 기재
Job.findAll(
{where:{companyId:0}}
)
.then((data)=>{ // 아래 await 사용으로 인해 에러 발생
let jobInfo = await Job.findOne({where:{id:jobId}})
res.json({data: jobInfo})
})
}
// 해결 코드
module.exports = async (req, res) => {
Job.findAll(
{where:{companyId:0}}
)
.then(async (data)=>{ // 콜백함수 앞에도 async 붙여줘서 에러 해결
let jobInfo = await Job.findOne({where:{id:jobId}})
res.json({data: jobInfo})
})
}
반응형