【Next.js】PageProps関連エラーの原因と解決方法を徹底解説【Procom開発記録】

はじめに

こんにちは。今回は、私が実際に開発しているSNSプロフィール集約サービス「Procom」の実装中に遭遇したエラー、
「PagePropsに関するエラー」とその解決方法について詳しく紹介します。

Next.jsのApp Router(app/ ディレクトリ)を使っている方、あるいはTypeScriptでしっかり型を扱いたい方にとって、
このエラーは非常にありがちで、意外とつまずきやすいポイントでもあります。


エラーの内容:PageProps が使えない?

ある日、以下のようなコードを書いたときに、Next.jsのビルドで次のエラーが発生しました。

import { PageProps } from 'next/app'; // ❌ これが原因

export default function MyPage({ params }: PageProps) {
// ...
}

表示されたエラー例

Type error: Module '"next/app"' has no exported member 'PageProps'.

「え、PagePropsって使えないの…?」と焦った瞬間でした。


原因:PagePropsnext/appからは使えない

このエラーの最大の原因は、PagePropsという型がNext.js 13以降のApp Routerで不要かつ存在しない点です。

PageProps は旧来の pages/_app.tsx 用の型であり、
App Router(app/ ディレクトリ)を使っている現在の構成では、そもそも PageProps は使いません。

// これはApp Router(app/page.tsx等)ではNG
import { PageProps } from 'next/app'; // ❌

正しい書き方:型は明示しないか、paramsのみ型定義

App Routerのページファイル(例:app/user/[uid]/page.tsx)では、Next.jsが渡す paramssearchParams を使いたいときは、以下のように書きます。

✅ 正しい構文

type Props = {
params: { uid: string };
};

export default function UserPage({ params }: Props) {
return <div>ユーザーID: {params.uid}</div>;
}

実際の修正(Procomでの事例)

Procomの開発では、ユーザーページを app/user/[uid]/page.tsx に作成しています。
当初、以下のようなコードでエラーになりました。

// 誤ったコード
import { PageProps } from 'next/app';

export default function Page({ params }: PageProps) {
return <div>{params.uid}</div>;
}

🔧 修正後

type Props = {
params: { uid: string };
};

export default function Page({ params }: Props) {
return <div>{params.uid}</div>;
}

これでビルドエラーは解消され、動作もバッチリでした。


補足:PageProps を見かけるのはなぜ?

PageProps は主に 旧式の pages/_app.tsx 構成や、Next.js 12以下のドキュメントで登場します。

// pages/_app.tsx用の定義(App Routerでは不要)
import type { AppProps } from 'next/app';

function MyApp({ Component, pageProps }: AppProps) {
return <Component {...pageProps} />;
}

このため、Next.js 13以降に移行して app/ ディレクトリを使っているなら、基本的に使う機会はありません


まとめ:同じエラーを防ぐために

項目内容
❌ やってはいけないimport { PageProps } from 'next/app'
✅ 正しい方法自前でparamsなどの型を定義する
対象バージョンNext.js 13以降のApp Router構成
備考pages/ ディレクトリでは AppProps を使用可能

おわりに

Next.jsのApp Routerを使っていると、どうしても旧ドキュメントや過去記事の情報に引きずられてしまうことがあります。
今回の PageProps のエラーもその典型です。

Procomではこのようなトラブルに都度対応しながら、よりモダンな構成へとアップデートを進めています。

このブログが、同じようにApp Routerで開発中の方の助けになれば幸いです。

おすすめの記事