TypeError: Невозможно прочитать свойство 'width' из undefined в getFeaturedImage (related. js: 24) - PullRequest
0 голосов
/ 09 февраля 2020

Я написал код для загрузки связанных постов в мой пост WordPress. У меня есть js, который изменяет размер показанного изображения. Я получаю сообщение об ошибке, когда выбранное изображение является частью сообщения.

TypeError: Cannot read property 'width' of undefined  at getFeaturedImage (related.js:24) 

Если ни одно из избранных изображений не является частью сообщения, в соответствующем сообщении все работает.

Примечание. Я использую WP RIG для разработки сайта.

Следующий код взят из связанного. js файла.

// Get the featured image if there is a featured image.
function getFeaturedImage(postObject) {
        // If there is no featured image, exit the function returning nothing.
        if (0 === postObject.featured_media) {
            return "";
        } else {
            let featuredObject = postObject._embedded["wp:featuredmedia"][0];
            console.log(featuredObject);
            let imgWidth = featuredObject.media_details.sizes.wpRigRelated.width;
            let imgHeight = featuredObject.media_details.sizes.wpRigRelated.height;

            return `
            <figure class="related-post__image">
                <img 
          src="${featuredObject.media_details.sizes.wpRigRelated.source_url}"
                'width="${imgWidth}"
                'height="${imgHeight}"
                'alt="" ' +
                >
            </figure>`;
        }
}

1 Ответ

1 голос
/ 09 февраля 2020

Если показанное изображение является частью поста, то featuredObject может быть неопределенным (согласно вашему объяснению).

Если это так, прежде чем пытаться получить доступ к ширине и высоте объекта, проверьте если он не определен.

if(typeof featuredObject === "undefined") {
  return "";
}

Так что, если он не определен, эта функция вернет пустую строку, но если она будет определена, она продолжит работу со скриптом.

(Рассмотрите возможность совместного использования вывода console.log(featuredObject); в инструментах разработчика, поскольку это может указывать на то, что точно не определено)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...