post: 2023-07-14
INDEX ▶
Next.jsでLintに引っかかった箇所を直してたら発生したこと(next/image)
Next.jsでLintに引っかかった箇所を直してました。
Lintの内容
Warning: Using `<img>` could result in slower LCP and higher bandwidth. Consider using `<Image />` from `next/image` to automatically optimize images. This may incur additional usage or cost from your provider. See: https://nextjs.org/docs/messages/no-img-element @next/next/no-img-element
パフォーマンスの問題があるのでHTMLのimgタグは使わずにnext/imageコンポーネントを使いましょう的なもの。
やったこと
- next/imageをimportする
- <img>を<Image>に置き換える
- Imageコンポーネントが提供してないpropsを修正する
- width="100%"になってた箇所を削除
- classNameに
w-full
を追加 ※ tailwindが入ってるので
デプロイ後に気づいたこと
- 画像が表示されてない
- ユーザーが投稿した画像のみ表示されてない。publicに配置してる画像が問題ない。
- 画像取得する箇所で400エラーになっていた
調べた
400エラーなので権限周りとかそういうことなのだなと推測しつつ。
こちらの記事の通り、next/imageで外部URLを取得する際にはドメインを予め指定しておく必要がある。
弊ブログはmicroCMSとNext.jsを組み合わせていて、画像もmicroCMSの管理下に配置している。
なので設定を追加した
# next.config.js
module.exports = {
images: {
domains: ['images.microcms-assets.io'],
},
}
修正後、無事に表示されるようになりました。