nestjs/jwt v10.2.0版本缺失expiresIn选项问题咨询
解决NestJS 10.2.0中JwtService.signAsync的expiresIn选项问题
问题分析
升级到NestJS 10.2.0后,JwtService.signAsync的选项中看不到expiresIn,但从你提供的JwtSignOptions接口来看,它是继承自jwt.SignOptions的——这里的jwt指底层依赖的jsonwebtoken包的类型定义,expiresIn本身属于该父接口的标准配置项,并非被NestJS移除。
解决步骤
直接传入expiresIn(无运行时问题)
尽管TypeScript可能出现提示缺失,但expiresIn依然是有效的配置参数,因为JwtSignOptions继承了jsonwebtoken的SignOptions,直接使用即可:await this.jwtService.signAsync(yourPayload, { expiresIn: '2h', secret: process.env.JWT_SECRET_KEY });修复类型提示问题
如果类型检查报错,可通过以下方式处理:- 确保项目已安装
@types/jsonwebtoken,且版本与jsonwebtoken主包版本匹配 - 用类型断言绕过提示:
import type * as jwt from 'jsonwebtoken'; await this.jwtService.signAsync(yourPayload, { expiresIn: '2h', secret: process.env.JWT_SECRET_KEY } as jwt.SignOptions);
- 确保项目已安装
核对依赖版本
@nestjs/jwt10.2.0可能更新了对jsonwebtoken的依赖版本,导致类型定义的展示逻辑变化。可以查看@nestjs/jwt的package.json文件,确认其依赖的jsonwebtoken版本,确保项目中安装的版本与之兼容。
内容的提问来源于stack exchange,提问作者Rahul Dahal
相关产品推荐
相关产品推荐

