2001Yのプロフォール画像

2001Y@Y20010920T

Next.jsをver.12からver.13へとアップデートした。

するとerror - Error: Invalid <Link> with <a> child. Please remove <a> or use <Link legacyBehavior>.とエラー発生。

Next.js 13からは<Link>の中に<a>を入れなくて良くなった、というか入れるとエラーが出る。

// Next.js 12
<Link>
	<a>
		Click me!
	</a>
</Link>

// Next.js 13
<Link>
	Click me!
</Link>

ドキュメントにもあるとおり、codemodを用いて<Link>内のすべての<a>を一括削除することができる。

npx @next/codemod new-link .

ただし、<a>がなくなるとCSSなどのサイト挙動がおかしくなるため、ひとまず回避策として<Link>legacyBehaviorを追加することで、Next.js 12と同じ挙動を行わせることができる。

// Next.js 13
<Link legacyBehavior>
	<a id="clickMe">
		Click me!
	</a>
</Link>

今回はひとまず、VSCodeのファイル横断置換を使って全ての<Link>legacyBehaviorを追加した。