Next.js App Router で page.tsx を置いても 404 が解消できない
App Router のルーティングはファイル名が `page.tsx`、配置が `app/` 配下、`default export` の 3 条件で成立する。
`pages/` への置き間違いや named export だけの状態は 404 の典型原因。
#nextjs#app-router#not-found#routing#page
公開:
要約
App Router で 404 になるときは 「ファイル名」「配置ディレクトリ」「default export」 の 3 点を順に確認する。
多くは page.tsx の名前間違いか、Pages Router と混同して pages/ に置いているケースで片付く。
よくある原因
- ファイル名違い:
index.tsx/route.tsxなどにしている。
Pages Router のindex.tsx慣習を引きずっている pages/に置いている: App Router はapp/配下が前提。pages/配下のファイルは別ルーター扱い- default export 忘れ: 名前付き export だけでは Page として認識されない
not-found.tsxの影響: 親ルートにnot-found.tsxを置くと、子の 404 もそこに委譲される- キャッシュ:
.nextの古い情報が残ってルート追加が認識されていない
解決策
1. ファイル名と配置を確認する
公式の page.js ファイル規約 のとおり、ルートディレクトリは app/、ファイル名は page.tsx。
app/
page.tsx -> /
about/page.tsx -> /about
blog/[slug]/page.tsx -> /blog/:slug2. default export を書く
export default function Page() {
return <h1>Hello</h1>;
}名前付き export だけでは認識されない点に注意する。
3. キャッシュをクリアする
rm -rf .next
npm run devそれでも 404 が続く場合は、公式のルーティングガイド で layout.tsx / route.tsx / not-found.tsx などの規約と影響範囲を確認する。