프로그래밍/알고리즘, 프로그래밍 언어

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})
  })
}

 

반응형