【Next.js v15】 API routeのparamsについて
投稿日: 2025年03月05日
初めて記事書きます!誤っていたらご指摘お願いします!
今現在(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することが出来ました!
メジャーアップデートするとさまざまな変更が起こりますね。
公式ドキュメントを読むことは大事と分かりつつ、固苦しい文章で読み解くのが難しく億劫になってしまいます😅