Консоль выдает ошибку: Uncaught TypeError: Cannot read properties of undefined (reading 'color') at secondColor at HTMLImageElement.

Есть три стадии показа карт. При нажатии на кнопку, показываются сначала карты первой стадии, потом второй и третьей. Ошибка вылазит при переходе со второй стадии на третью. Раньше такая же ошибка, только писало "at firstColor", выскакивала при переходе с первой стадии на вторую, но эта ошибка решилась путем обертки кода в инструкцию if

Вот сам код:

deck.addEventListener('click', () => {
    img.style.display = 'block';
    if (ancientCards[0].classList.contains('active') == true && levelDifficulty[0].classList.contains('active') == true) {

        if (!firstStageText.classList.contains('done')) {
            let randomNum = Math.floor(Math.random() * ((firstStage.length - 1) - 0 + 1) ) + 0;
            let num = randomNum;
            function firstColor() {
                if (firstStage[num].color == 'brown') {
                    firstBrown.textContent -= 1;
                    return 'brown';

                }
                if (firstStage[num].color == 'blue') {
                    firstBlue.textContent -= 1;
                    return 'blue';
                }
                if (firstStage[num].color == 'green') {
                    return 'green';
                }
            }
            lastCard.innerHTML = `<img class = "last-card" src='../assets/MythicCards/${firstColor()}/${firstStage[num].cardFace}'>`;
            firstStage.splice(num, 1);
        }
        if (firstStageText.classList.contains('done')) {
            let randomNum2 = Math.floor(Math.random() * ((secondStage.length - 1) - 0 + 1) ) + 0;
            let num2 = randomNum2;
            function secondColor() {
ошибка, строка 233 "at second color" -> if (secondStage[num2].color == 'brown') {
                    secondBrown.textContent -= 1;
                    return 'brown';
                }
                if (secondStage[num2].color == 'blue') {
                    return 'blue';
                }
                if (secondStage[num2].color == 'green') {
                    secondGreen.textContent -= 1;
                    return 'green';
                }
            }
ошибка, строка 245 "HTMLImageElement.<anonymous>" -> lastCard.innerHTML = `<img class = "last-card" src='../assets/MythicCards/${secondColor()}/${secondStage[num2].cardFace}'>`;
            secondStage.splice(num2, 1);
        }
        if (secondStageText.classList.contains('done')) {
            let randomNum3 = Math.floor(Math.random() * ((thirdStage.length - 1) - 0 + 1) ) + 0;
            let num3 = randomNum3;
            function thirdColor() {
                if (thirdStage[num3].color == 'brown') {
                    thirdBrown.textContent -= 1;
                    return 'brown';
                }
                if (thirdStage[num3].color == 'blue') {
                    return 'blue';
                }
                if (thirdStage[num3].color == 'green') {
                    thirdGreen.textContent -= 1;
                    return 'green';
                }
            }
            lastCard.innerHTML = `<img class = "last-card" src='../assets/MythicCards/${thirdColor()}/${thirdStage[num3].cardFace}'>`;
            thirdStage.splice(num3, 1);
        }

        if (firstBrown.textContent == 0 && firstBlue.textContent == 0) {
            firstStageText.classList.add('done');

        }
        if (firstStage.length == 0 && secondStage.length == 0) {
            secondStageText.classList.add('done');
        }
        if (thirdStage.length == 0) {
            thirdStageText.classList.add('done');
            deck.classList.remove('active');
        }
    }
}); 

Ответы (0 шт):