NextJS 13应用构建触发类型错误,开发环境正常如何修复?
NextJS 13 App Router构建时NextAuth路由类型错误解决方案
在NextJS 13 App Router项目中,开发环境下NextAuth认证路由正常运行,但执行构建时出现类型错误,报错文件为app/api/auth/[...nextauth]/route.ts,错误核心是导出的authOptions不符合路由模块的类型约束,提示Type 'AuthOptions' is not assignable to type 'never'。
问题原因
App Router对路由文件的导出内容有严格限制:仅允许导出HTTP方法处理函数(如GET、POST)和特定路由配置项(如config),任何额外的导出变量都会触发构建时的类型检查错误,开发环境的类型校验相对宽松,因此不会报错。
解决方案
将authOptions从路由文件中分离到单独的模块中,避免在路由文件里导出它:
- 创建单独的认证配置文件,比如
app/lib/auth.ts:
import { AuthOptions } from "next-auth"; import GoogleProvider from "next-auth/providers/google"; export const authOptions: AuthOptions = { providers: [ GoogleProvider({ clientId: process.env.GOOGLE_ID as string, clientSecret: process.env.GOOGLE_SECRET as string, }), ], };
- 修改路由文件
app/api/auth/[...nextauth]/route.ts,导入外部的authOptions:
import NextAuth from "next-auth"; import { authOptions } from "@/app/lib/auth"; const handler = NextAuth(authOptions); export { handler as GET, handler as POST };
验证
重新执行构建命令,类型错误会消失。后续如果需要在其他地方使用authOptions(比如服务器组件中获取会话),也可以直接从app/lib/auth.ts导入,无需重复定义。
内容的提问来源于stack exchange,提问作者Ajmal Khan
相关产品推荐
相关产品推荐

