【Next.js v15】 API routeのparamsについて

【Next.js v15】 API routeのparamsについて

投稿日: 2025年03月05日

学習振り返り
要約
  • Next.jsの最新バージョンはv15で、ドキュメントではv14.2.16の使用が推奨されています。
  • API routeのパラメーター受け取りでTypeエラーが発生し、paramsの型定義を修正する必要がありました。
  • Next.js 15以降はparamsをPromiseで受け取り、awaitを使用してアクセスすることが求められています。

初めて記事書きます!誤っていたらご指摘お願いします!

はじめに

今現在(2025/3/5)の最新はnext.js v15ですが、注意喚起がありますようにカリキュラムでは、 14.2.16での導入が薦められています!
私は15になっていることに気づかずに、latestでインストールして作業を進めてしまったので、自分への戒め備忘録です。
もし同じルートを辿ってあたふたされた方がいれば、参考にしてください。

今回のつまずき

当初、API routeのパラメーター受け取りを以下のようにしていました。

export const GET = async (
  request: NextRequest,
  { params }: { params: { id: string } },
) => {
  const { id } = params
}

npm run buildをすると以下のようなエラーで怒られました。

Type error: Route "src/app/api/category/[id]/route.ts" has an invalid "GET" export: Type "{ params: { id: string; }; }" is not a valid type for the function's second argument.

翻訳してみると"{ params: { id: string; }}"の部分の型が、どうやら有効ではないようです。

解決

next.js 15以降では、paramsをPromiseで受け取るように変更があったようです。
それに伴って、paramsにアクセスするためにawaitを使用する。

export const GET = async (
  request: NextRequest,
  { params }: { params: Promise<{ id: string }> }
) => {
  const { id } = await params
}

参考
https://nextjs.org/docs/app/api-reference/file-conventions/route#context-optional

これで問題なくbuildすることが出来ました!

あとがき

メジャーアップデートするとさまざまな変更が起こりますね。
公式ドキュメントを読むことは大事と分かりつつ、固苦しい文章で読み解くのが難しく億劫になってしまいます😅

シェア!

Threads
Loading...
記事一覧に戻る
Threads
0