Next.js 13.4 + NextAuth类型错误:'AuthOptions'无法赋值给'never'
解决Next.js 13.4 App Router中NextAuth的类型错误
错误原因
Next.js App Router的route.ts文件有严格的导出约束:仅允许导出HTTP方法处理函数(如GET、POST)、config或runtime这类特定字段。你当前在路由文件中导出了authOptions变量,这违反了类型检查规则,导致编译失败。
解决方案
将authOptions移到单独的非路由文件中,避免在route.ts里导出多余内容:
- 创建
lib/auth.ts文件,存放auth配置:
import { AuthOptions } from "next-auth"; import DiscordProvider from "next-auth/providers/discord"; export const authOptions: AuthOptions = { providers: [ DiscordProvider({ clientId: process.env.CLIENT_ID as string, clientSecret: process.env.CLIENT_SECRET as string, }), ], session: { strategy: "jwt", }, secret: process.env.NEXTAUTH_SECRET, };
- 修改
app/api/auth/[...nextauth]/route.ts,从外部导入配置:
import NextAuth from "next-auth"; import { authOptions } from "@/lib/auth"; const handler = NextAuth(authOptions); export { handler as GET, handler as POST };
额外说明
后续如果需要在服务器组件、其他API路由中复用authOptions,直接从lib/auth.ts导入即可,既符合App Router的规范,也保证了代码的可维护性。
内容的提问来源于stack exchange,提问作者Luk
相关产品推荐
相关产品推荐

