Better Auth + Prisma + PostgreSQL 自定义用户字段后前端类型错误及字段undefined问题求助
Better Auth + Prisma + PostgreSQL 自定义用户字段后前端类型错误及字段undefined问题求助
嘿,我之前用Better Auth搭配Prisma的时候也碰到过类似的类型不匹配问题,结合你给出的代码和报错信息,给你梳理几个实用的排查方向:
1. 先修正Prism适配器的数据库配置错误
看你的auth.ts里,明明用的是PostgreSQL,但prismaAdapter里写的是provider: "mysql":
database: prismaAdapter(prisma, { provider: "mysql", }),
这个配置不匹配很可能会导致CLI生成类型时出现异常,先把它改成provider: "postgresql",然后重新运行一次npx @better-auth/cli generate,确保类型文件是基于正确的数据库生成的。
2. 确认前端使用的Auth Client包含自定义字段的类型
Better Auth的CLI生成的类型文件会自动包含你定义的additionalFields信息,要确保前端的authClient是直接从后端导出的实例,而不是自己重新初始化的——如果前端单独初始化客户端,类型会缺失自定义字段。
如果还是不行,可以手动在前端扩展类型(作为临时解决办法):
// 放在前端项目的类型声明文件里,比如types/better-auth.d.ts declare module "@better-auth/client" { interface SignUpEmailParams { first_name: string; middle_name?: string; last_name: string; suffix?: string; } }
这样TypeScript就能识别你传入的自定义字段了。
3. 重新生成并同步类型文件
有时候CLI生成的文件可能没同步到前端,你可以试试:
- 删除项目里的
.better-auth文件夹(如果存在的话) - 重新运行
npx @better-auth/cli generate - 重启前端的TypeScript服务(比如VSCode里按
Ctrl+Shift+P,选择TypeScript: Restart TS Server)
4. 验证后端配置与Prisma Schema的一致性
你的后端additionalFields配置是没问题的,而且Prisma Schema也正确生成了自定义字段,所以核心问题大概率出在类型同步环节,按照前面的步骤操作应该能解决。
内容来源于stack exchange
相关产品推荐
相关产品推荐

