img要素なし
LCPの低下と帯域幅の増加につながるため、
<img>
要素の使用を禁止します。
このエラーが発生した理由
画像をNext.jsのnext/image
から<Image />
ではなく、<img>
要素を使用して表示しました。
考えられる解決策
next/image
を使用して、自動画像最適化でパフォーマンスを向上させます。
注: マネージドホスティングプロバイダーにデプロイする場合、最適化された画像は元の画像と異なる料金が課される可能性があるため、プロバイダーの料金を確認することを忘れないでください。
一般的な画像最適化プラットフォームの料金
注: セルフホスティングの場合、
sharp
をインストールし、サーバーに最適化された画像をキャッシュするのに十分なストレージがあるか確認することを忘れないでください。
pages/index.js
import Image from 'next/image'
function Home() {
return (
<Image
src="https://example.com/hero.jpg"
alt="Landscape picture"
width={800}
height={500}
/>
)
}
export default Home
- blur-upプレースホルダーなどの
next/image
機能を使用したいが、画像最適化を無効にしたい場合は、unoptimizedを使用することで可能です。
pages/index.js
import Image from 'next/image'
const UnoptimizedImage = (props) => {
return <Image {...props} unoptimized />
}
- ネストされた
<img>
要素とともに<picture>
要素を使用することもできます。
pages/index.js
function Home() {
return (
<picture>
<source srcSet="https://example.com/hero.avif" type="image/avif" />
<source srcSet="https://example.com/hero.webp" type="image/webp" />
<img
src="https://example.com/hero.jpg"
alt="Landscape picture"
width={800}
height={500}
/>
</picture>
)
}
- カスタム画像ローダーを使用して画像を最適化できます。loaderFileをカスタムローダーのパスに設定します。
next.config.js
module.exports = {
images: {
loader: 'custom',
loaderFile: './my/image/loader.js',
},
}
便利なリンク
これは役立ちましたか?