使用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
相关产品推荐
相关产品推荐

