在 next.js 新的 app router(app 目录)中,`/auth/signin` 页面需作为 server component 放置在 `app/auth/signin/page.tsx`,且必须配合 `[email protected]+` 的 app router 兼容配置,否则将返回 404。
Next.js 13 引入的 app 目录默认使用 Server Components,并不再支持传统的 pages/api 路由方式。你当前的 signin.js 文件位于 pages/auth/signin.js(或类似旧结构),但项目已启用 app 目录 —— 这会导致该路径被完全忽略,从而触发 404。
✅ 正确做法如下:
1. 将登录页迁移至 app/auth/signin/page.tsx
// app/auth/signin/page.tsx
export default function SignIn() {
return (
Sign In
);
}
⚠️ 注意:app/auth/signin 是普通路由页面(用于展示 UI),不处理认证逻辑;认证仍由 next-auth 的服务端路由(如 /api/auth/*)完成。
2. 配置 auth.ts(App Router 兼容入口)
NextAuth v4.24+ 起正式支持 App Router,需创建 app/api/auth/[…nextauth]/route.ts:
// app/api/auth/[...nextauth]/route.ts
import { handlers } from "@/auth" // ← 你的 auth.ts 导出 handlers
export const { GET, POST } = handlers;
并在根目录创建 auth.ts(替代旧版 […nextauth].js):