本文へ移動
verified onnext@16.3.5react@19
最終検証日 2026-09-26
Next.js道場

next/image の width が無いときの直し方

実際に出るエラー

Error: Image with src "/a.png" is missing required "width" property.

next/image に width を書かずに、文字列のパスで画像を渡したときに出るエラーです。

開発と本番で、壊れ方が違う

import Image from 'next/image'
 
export default function Page() {
  return <Image src="/a.png" alt="" />
}
width と height を書かなかったとき(実機で確かめた)
開発(next dev)本番(next build → start)
型チェック—通る
ページ500 で止まる普通に出る
文言missing required "width" propertyどこにも出ない

型チェックを有効にしていても止まりません。width は型の上では省略できます(fill を使う書き方があるため)。開発サーバーで一度も開かずに出すと、本番まで素通りします。

hostname のエラーと同じく、「開発では止まり、本番では黙っている」形です。

本番では何が起きているか

本番の HTML を見ると、img に width も height も付かず、代わりに sizes="100vw" が付いていました。画面の幅いっぱいに出す画像として扱われています。

ブラウザは、sizes と画面の幅から、読み込む版を選びます。同じ画像で比べました。

幅 800 の画面で読み込まれた版(実機で確かめた)
書き方読み込まれた版
width を書かないw=1080
width={100} height={100}w=128

表示が小さくても、画面の幅ぶんの大きな版を読み込みます。また img に寸法が無いので、読み込み終わるまで画像の場所が確保されません。

直し方

1. width と height を書く

<Image src="/a.png" alt="" width={600} height={400} />

書くのは画像の縦横比が分かる値です。表示の大きさは CSS で変えられます。

2. 画像を import して渡す

import Image from 'next/image'
import photo from './photo.png'
 
export default function Page() {
  return <Image src={photo} alt="" />
}

実機で、import した画像には width と height が自動で入ることを確かめました。画像ファイルそのものから寸法を読んでいます。リポジトリに置く画像なら、この形がいちばん書き忘れがありません。

3. 親の大きさに合わせる(fill)

寸法が決まっていない画像を、枠いっぱいに出したいときの書き方です。

<div style={{ position: 'relative', width: 300, height: 200 }}>
  <Image src="/a.png" alt="" fill sizes="300px" />
</div>

実機では、img が親いっぱいに広がる指定(position:absolute と幅・高さ 100%)で出ました。親に position: relative と大きさが要ります。

直したあとに確かめること

  1. 開発サーバーで、画像のあるページを一度ずつ開く。書き忘れがあれば 500 で止まります
  2. 本番と同じビルドで、開発ツールのネットワークを開き、読み込まれた /_next/image の w= が表示の大きさに見合っているかを見る

出典

このページの内容は上記の一次情報を基準に書いています。個人ブログや二次情報を根拠にしていません。

理解できたか試す

では、このコードはどうなりますか。

public に置いた画像を next/image で出しました。width と height は書いていません。型チェックは有効です。本番ビルドして開くと、どうなりますか。

この問題を解くこのテーマの問題 3 問