Проблема с изображением NextjS с src и URL-адресом внешнего изображения по умолчанию
Я использую последнюю версию NextJS 10.0.9. У меня есть изображение, которое я пытаюсь отобразить, но получаю сообщение об ошибке:
Error: Image with src "https://picsum.photos/480/270" must use "width" and "height" properties or "layout='fill'" property.
Как вы можете видеть здесь, у меня установлены все эти свойства:
<div className="card-img">
<Image
alt={media?.title}
title={media?.title}
src={media?.previewImage || 'https://picsum.photos/480/270'}
width={480}
height={270}
layout="fill"
/>
</div>
По какой-то причине кажется, что наличие внешнего изображения по умолчанию не должно хорошо работать с компонентом Image. Кто-нибудь знает обходной путь или причину, по которой это может быть так?
Небольшое примечание: у меня есть ошибка Typescript на
layout
свойство, которое говорит: «Тип '« заливка »' не может быть присвоено типу '« фиксированный »|« внутренний »|« отзывчивый »| undefined'.». Я не уверен, связано ли это?
2 ответа
Если вы используете, вам не нужны атрибуты ширины и высоты. Сообщение об ошибке не совсем понятно, но это «или» является исключающим «или». Вы можете определить ширину / высоту или, но не то и другое одновременно.
Это побочный продукт того, как работает next / image : свойства width / height используются для определения соотношения сторон, не обязательно размера отображения.
Поскольку означает «растянуть до заполнения родительского элемента», ширина и высота не имеют смысла. Итак, чтобы исправить ошибку, удалите
layout='fill'
, или удалите размеры.
Вы, наверное, уже видели это, но вот документы на всякий случай: https://nextjs.org/docs/api-reference/next/image
Для других, кто, возможно, наткнулся на эту страницу, но не совсем нашел ответ, который они ищут, я также хотел бы подчеркнуть, что свойства ширины и высоты компонента «Следующее изображение» не принимают десятичные знаки. Это довольно легко не заметить, так как сообщение об ошибке не ссылается на формат реквизита.