在TypeScript中集成NextAuth时出现两个类型错误求助
NextAuth集成TypeScript项目的错误修复
错误说明
- 模块"next-auth"没有导出成员'NextAuthOptions'.ts(2305)
- 该表达式不可调用。Type 'typeof import("next-auth")'没有调用签名。
原问题代码
import NextAuth from "next-auth" import { NextAuthOptions } from "next-auth" import GoogleProvider from "next-auth/providers/google"; export const authOptions: NextAuthOptions = ({ providers: [ GoogleProvider({ clientId: `${process.env.GOOGLE_CLIENT_ID}`, clientSecret: `${process.env.GOOGLE_CLIENT_SECRET}`, }) ] }) const handler = NextAuth(authOptions) export { handler as GET, handler as POST }
错误原因
- 导入路径错误:NextAuth v4版本中,API路由的处理函数
NextAuth需要从next-auth/next导入,而非next-auth的默认导出;NextAuthOptions虽从next-auth导出,但导入路径错误会引发类型识别问题。 authOptions定义错误:原代码用({ ... })包裹配置对象,会被JS解析为返回对象的箭头函数,而非直接符合NextAuthOptions类型的对象,导致类型不匹配。
修复后的代码
import NextAuth from "next-auth/next" import { NextAuthOptions } from "next-auth" import GoogleProvider from "next-auth/providers/google"; // 直接定义对象,移除多余括号 export const authOptions: NextAuthOptions = { providers: [ GoogleProvider({ // 用类型断言处理环境变量类型,避免TS报错 clientId: process.env.GOOGLE_CLIENT_ID as string, clientSecret: process.env.GOOGLE_CLIENT_SECRET as string, }) ] } const handler = NextAuth(authOptions) export { handler as GET, handler as POST }
额外说明
- 确保已安装正确版本依赖:
npm install next-auth - 若仍有类型问题,检查
tsconfig.json是否配置"moduleResolution": "node"或"bundler"(适配Next.js环境)
内容的提问来源于stack exchange,提问作者Captai-N
相关产品推荐
相关产品推荐

