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

使用NextAuth MongoDB适配器遇TypeScript类型不兼容错误求助

NextAuth MongoDB适配器类型不兼容问题

代码实现

我使用NextAuth的MongoDB适配器,代码如下:

import NextAuth from "next-auth"
import { MongoDBAdapter } from "@auth/mongodb-adapter"
import clientPromise from "../../../lib/mongodb"

// 此处省略providers配置...

export default NextAuth({
    providers,
    adapter: MongoDBAdapter(clientPromise),
})

报错信息

英文原文

Type 'Adapter' is not assignable to type 'Adapter | undefined'.
Type 'Adapter' is not assignable to type 'DefaultAdapter & { createVerificationToken: (verificationToken: VerificationToken) => Awaitable<VerificationToken | null | undefined>; useVerificationToken: (params: { ...; }) => Awaitable<...>; }'.
Type 'Adapter' is not assignable to type 'DefaultAdapter'.
Types of property 'createUser' are incompatible.
Type '((user: Omit<AdapterUser, "id">) => Awaitable) | undefined' is not assignable to type '(user: Omit<AdapterUser, "id">) => Awaitable'.
Type 'undefined' is not assignable to type '(user: Omit<AdapterUser, "id">) => Awaitable'.ts(2322)
types.d.ts(106, 5): The expected type comes from property 'adapter' which is declared here on type 'AuthOptions'
(property) AuthOptions.adapter?: Adapter | undefined
You can use the adapter option to pass in your database adapter.

Required: No

中文翻译

类型“Adapter”无法分配给类型“Adapter | undefined”。
类型“Adapter”无法分配给类型“DefaultAdapter & { createVerificationToken: (verificationToken: VerificationToken) => Awaitable<VerificationToken | null | undefined>; useVerificationToken: (params: { ...; }) => Awaitable<...>; }”。
类型“Adapter”无法分配给类型“DefaultAdapter”。
属性“createUser”的类型不兼容。
类型“((user: Omit<AdapterUser, "id">) => Awaitable) | undefined”无法分配给类型“(user: Omit<AdapterUser, "id">) => Awaitable”。
类型“undefined”无法分配给类型“(user: Omit<AdapterUser, "id">) => Awaitable”。ts(2322)
types.d.ts(106, 5): 预期类型来自属性“adapter”,该属性在类型“AuthOptions”上声明
(property) AuthOptions.adapter?: Adapter | undefined
你可以使用adapter选项传入数据库适配器。

必填项:否

解决方案

这类报错通常是依赖版本不匹配或类型定义冲突导致的,可尝试以下步骤解决:

  • 版本兼容性检查:确保next-auth和@auth/mongodb-adapter版本一致(优先使用AuthJS v5系列版本,v4与v5的适配器类型定义差异较大)
  • 重置依赖:删除node_modules和锁文件后重新安装
    rm -rf node_modules package-lock.json
    npm install
    
  • 类型断言:如果版本确认无误仍报错,可手动添加类型断言强制适配
    import NextAuth from "next-auth"
    import { MongoDBAdapter } from "@auth/mongodb-adapter"
    import { Adapter } from "next-auth/adapters"
    import clientPromise from "../../../lib/mongodb"
    
    export default NextAuth({
        providers,
        adapter: MongoDBAdapter(clientPromise) as Adapter,
    })
    

内容的提问来源于stack exchange,提问作者Emanuele Paolini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:42:59