TypeError: Cannot read properties of undefined (reading 'url') 에러가 뜹니다.

조회수 521회
setTimeout(function() {
    var res3 = reqeust("POST", "https://typecast.ai/api/speak/batch/get", {
        headers: {
            "Authorization": `Bearer ${token}`
        },
        json: speak_url
    })

    var url = JSON.parse(res3.getBody("utf8")).result[0].audio.url;

이 부분에서

var url = JSON.parse(res3.getBody("utf8")).result[0].audio.url;
                                                          ^

TypeError: Cannot read properties of undefined (reading 'url')
    at Timeout._onTimeout (경로)
    at listOnTimeout (node:internal/timers:557:17)
    at processTimers (node:internal/timers:500:7)

이런 에러가 떠서 중간에 console.log를 넣어 확인해보니까 어떤 때는 "audio": {"url": "url"}가 있고 또 어떤 때는 없었습니다.

원래 자바스크립트 까막눈인데 사용하고 싶은 api가 어떤 분이 자바스크립트로 만드신 것 밖에 없어서 무리하게 도전했다가 혼자 해결도 못하고 있네요...

  • audio란 뇨솤이 undefined일 때가 있고 아닐 때가 있다는 말인데 이 코드만 갖고는 도와드릴 방법이 없네요. audio가 가끔 없다고 하시는데 왜 가끔 가출하는건지 원인을 알아봐야겠죠? 그리고 audio가 가출한 시점에 result[0]은 빈 객체가 아닌지도 같이 확인해보세요. 편집요청빌런 2022.1.13 16:15

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)