Javascript Turbo无法读取未定义的属性

Javascript Turbo无法读取未定义的属性,javascript,html,Javascript,Html,根据本教程()我正在制作一个音频流站点,允许用户将音乐文件上传到他们的页面。但是,当用户首次登录时,没有上载任何文件,我会遇到以下错误: app.js:67未捕获类型错误:无法读取未定义的属性“forEach” 有人知道我为什么不能让它工作吗? 这是我的密码: var renderTracks = function(){ if (currentUser == null) return var tracksList = '' currentUser

根据本教程()我正在制作一个音频流站点,允许用户将音乐文件上传到他们的页面。但是,当用户首次登录时,没有上载任何文件,我会遇到以下错误: app.js:67未捕获类型错误:无法读取未定义的属性“forEach” 有人知道我为什么不能让它工作吗? 这是我的密码:

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)
}
var renderTracks=function(){
if(currentUser==null)
返回
var tracksList=''
currentUser.tracks.forEach(函数(track,i){
tracksList+=“”
tracksList+='上传:'
+track.timestamp+“

” tracksList+=“$40” }) $('#tracks table').html(tracksList) }

我尝试创建一个if语句,在用户登录之前创建一个跟踪数组,但没有成功。非常感谢您的帮助。

我对应用程序其余部分的上下文了解不够,但听起来好像有一个currentUser存在,您可以进入下一个区块,但tracks键不存在。当您遇到这些类型的情况时,我的建议是,只需放置一个console.log语句,看看您得到了什么;i、 e:

var renderTracks=函数(){ if(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)
var tracksList=''
console.log(JSON.stringify(currentUser))
currentUser.tracks.forEach(函数(track,i){
tracksList+=“”
tracksList+='上传:'
+track.timestamp+“

” tracksList+=“$40” }) $('#tracks table').html(tracksList)

}

我对应用程序其余部分的上下文了解不够,但听起来好像有一个currentUser存在,您可以进入下一个块,但tracks键不存在。当您遇到这些类型的情况时,我的建议是,只需放置一个console.log语句,看看您得到了什么;i、 e:

var renderTracks=函数(){ if(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)
var tracksList=''
console.log(JSON.stringify(currentUser))
currentUser.tracks.forEach(函数(track,i){
tracksList+=“”
tracksList+='上传:'
+track.timestamp+“

” tracksList+=“$40” }) $('#tracks table').html(tracksList)

}

forEach需要数组才能工作,如果没有任何轨迹可获取,则应在currentUser对象中创建空数组。forEach需要数组才能工作,如果没有任何轨迹可获取,则应在currentUser对象中创建空数组。