自定义NextAuth CredentialProvider时JWT回调User缺失token字段问题
解决NextAuth JWT回调中User无token字段的类型问题
你需要扩展NextAuth的内置TypeScript类型,默认的User/AdapterUser并不包含你自定义的token字段,所以TypeScript会报错。具体操作如下:
1. 创建类型声明文件
在项目根目录或者src/types文件夹下创建next-auth.d.ts文件(TypeScript会自动识别这类.d.ts声明文件)。
2. 扩展NextAuth的核心类型
在next-auth.d.ts中添加以下代码,把自定义字段加入到对应类型中:
import NextAuth from "next-auth"; // 扩展User类型,添加自定义的token字段 declare module "next-auth" { interface User { token: string; id: string; } // 可选:如果需要在Session中也获取这些字段,扩展Session类型 interface Session { user: { id: string; name: string; email: string; token: string; }; expiration?: number; } } // 扩展JWT类型,添加你需要存入JWT的字段 declare module "next-auth/jwt" { interface JWT { email?: string; name?: string; token?: string; id?: string; expiration?: number; } }
3. 确保TypeScript识别声明文件
如果你的声明文件放在src/types下,检查tsconfig.json的include配置,确保包含该目录:
{ "include": ["src/**/*", "src/types/**/*.d.ts"] }
做完以上操作后,回到你的JWT回调代码,user.token就不会再出现类型错误了——TypeScript现在能识别你自定义的token字段。
内容的提问来源于stack exchange,提问作者user19730992
相关产品推荐
相关产品推荐

