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

使用next-auth+Prisma+MongoDB第三方登录时出现adapter_error_getUserByAccount错误

解决next-auth + Prisma + MongoDB第三方登录的adapter_error_getUserByAccount错误

出现Cannot read properties of undefined (reading 'findUnique')错误,核心原因是Prisma Adapter无法正确访问Prisma Client中的模型方法,以下是针对性解决步骤:

1. 确保Prisma Schema包含NextAuth必需的模型

NextAuth的Prisma Adapter依赖特定的数据库模型结构,你需要在schema.prisma中添加以下模型(如果还没有):

model User {
  id            String    @id @default(cuid())
  name          String?
  email         String?   @unique
  emailVerified DateTime?
  image         String?
  accounts      Account[]
  sessions      Session[]
}

model Account {
  id                String  @id @default(cuid())
  userId            String
  type              String
  provider          String
  providerAccountId String
  refresh_token     String? @db.Text
  access_token      String? @db.Text
  expires_at        Int?
  token_type        String?
  scope             String?
  id_token          String? @db.Text
  session_state     String?
  user              User    @relation(fields: [userId], references: [id], onDelete: Cascade)

  @@unique([provider, providerAccountId])
}

model Session {
  id           String   @id @default(cuid())
  sessionToken String   @unique
  userId       String
  expires      DateTime
  user         User     @relation(fields: [userId], references: [id], onDelete: Cascade)
}

model VerificationToken {
  identifier String
  token      String   @unique
  expires    DateTime

  @@unique([identifier, token])
}

添加后执行数据库同步命令:

# 开发环境用migrate(生成迁移文件)
npx prisma migrate dev
# 或直接同步(快速测试场景)
npx prisma db push

2. 重新生成Prisma Client

如果Prisma Client未根据最新Schema生成,会导致模型方法缺失,执行:

npx prisma generate

3. 检查依赖版本兼容性

确保next-auth、@next-auth/prisma-adapter、@prisma/client三者版本匹配,避免版本差异导致API不兼容。建议锁定兼容版本,示例:

{
  "dependencies": {
    "next-auth": "^4.24.7",
    "@next-auth/prisma-adapter": "^1.0.7",
    "@prisma/client": "^5.6.0"
  },
  "devDependencies": {
    "prisma": "^5.6.0"
  }
}

更新后重新安装依赖:

npm install

4. 验证Prisma Client初始化

可在nextauth.js中临时添加日志验证prisma实例的模型访问能力(测试后删除):

console.log(prisma.account); // 应输出包含findUnique方法的对象

若输出undefined,说明Prisma Client生成失败,回到步骤2重新执行生成命令。


内容的提问来源于stack exchange,提问作者Velislav Dimitrov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:25:24