2017-10-09 5 views
1

사용자가 음악 파일을 페이지에 업로드 할 수 있도록이 자습서 (https://www.turbo360.co/tutorial/audio-streaming-app)에 따라 오디오 스트리밍 사이트를 만들고 있습니다. 그러나 사용자가 처음으로 로그인 할 때 어떤 파일도 업로드하지 않으면이 오류가 발생합니다. app.js : 67 Uncaught TypeError : 'forEach'속성이 정의되지 않음을 읽을 수 없음 왜 작동하지 않는지 알 수 있습니다. 다음은 내 코드입니다 :Turbo 속성을 읽을 수 없습니다. 정의되지 않음

var renderTracks = function(){ 
    if (currentUser == null) 
     return 

    var tracksList = '' 
     currentUser.tracks.forEach(function(track, i){ 
      tracksList += '<tr><td style="width:130px"><a 
      target="_blank" href="' + track.url + '"><img 
      src="/dist/images/playbutton.png" alt="..." /></a></td>' 
      tracksList += '<td><h5><a target="_blank" href="' + 
      track.url + '">' + track.name + '</a></h5><p>Uploaded: ' 
      + track.timestamp + '</p></td>' 
      tracksList += '<td><h4 class="price">$40</h4></td></tr>' 
     }) 

    $('#tracks-table').html(tracksList) 
} 

나는 사용자가 로그인하기 전에 트랙 배열을 생성 if 문을 만드는 시도,하지만 작동하지 않았다. 어떤 도움을 주셔서 감사합니다.

+0

대해 forEach 작동하는 배열을 필요로

var에 renderTracks = 함수(), 당신은 currentUser에 빈 배열을 생성한다 당신이 얻을 트랙이없는 경우 개체. –

답변

0

나머지 응용 프로그램의 컨텍스트가 충분하지 않지만 currentUser가 있고 다음 블록으로 이동하지만 트랙 키가 존재하지 않는 것처럼 들립니다. 이러한 유형의 상황을 생각해 내고 console.log 문을 배치하고 얻은 것을 확인하는 것이 좋습니다. 예 : {(currentUser == NULL) 반환

var tracksList = '' 

    console.log(JSON.stringify(currentUser)) 

    currentUser.tracks.forEach(function(track, i){ 
     tracksList += '<tr><td style="width:130px"><a 
     target="_blank" href="' + track.url + '"><img 
     src="/dist/images/playbutton.png" alt="..." /></a></td>' 
     tracksList += '<td><h5><a target="_blank" href="' + 
     track.url + '">' + track.name + '</a></h5><p>Uploaded: ' 
     + track.timestamp + '</p></td>' 
     tracksList += '<td><h4 class="price">$40</h4></td></tr>' 
    }) 

$('#tracks-table').html(tracksList) 

이 경우 }

관련 문제