You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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 }

错误原因

  1. 导入路径错误:NextAuth v4版本中,API路由的处理函数NextAuth需要从next-auth/next导入,而非next-auth的默认导出;NextAuthOptions虽从next-auth导出,但导入路径错误会引发类型识别问题。
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 17:45:27