Next.js
Next.js 15でパラメータ処理の記述が変更となった件
はじめに
開発環境では、動作、デバッグ等問題ありませんでしたが、Vercelへデプロイする際に「Error: React Hook~」というエラーによりビルドが失敗していました。
エラー概要
Vercelのビルドログを確認すると以下のようなエラーメッセージが出力されていました。
Type error: Route has an invalid export:
Type "{ params: { id: string; }; }" is not a valid type for the function’s second argument.
Next.js 15では、Route HandlersのparamsがPromiseオブジェクトになったため「Type error」と出ていた模様です。
対策
以下対策です。
・Route HandlersのparamsをPromiseオブジェクトとして定義
・paramsをawaitして取得
①エラーの記述
export async function DELETE(
req: NextRequest,
{ params }: { params: { id: string } }
) {
const id = parseInt(params.id);
~~~~~~~~~~~~~~~
}
②修正後の記述
「params」をPromiseオブジェクトとして定義しています。
また、「params」をメソッド内で使用する際は「await」を使用しています。
export async function DELETE(
req: NextRequest,
{ params }: { params: Promise<{ id: string }> }
) {
const id = parseInt((await params).id);
~~~~~~~~~~~~~~~
}
まとめ
・Route HandlersのparamsをPromiseオブジェクトとして定義
・paramsをawaitして取得
Next.js 15になり、仕様が変わったところがありますが、順次対応していきながらNext.jsライフを楽しめたらと思います。
参考
ありがとうございました。
プロフィール
▲写真はペットのニッキ(チンチラ/げっ歯類)
こんにちは。RYUTOと申します。
医療職を経て、夢見るSE(システムエンジニア)として日々研鑽を積んでいます。
このサイトでは日々邁進する中で、その生きた証(ログ)を備忘録を残しています。
皆さんの参考になれたらうれしいです。