nestJS 使用@nestjs/jwt签发token,设置token的过期时间报错“时间选项无效”

代码

import { JwtService } from '@nestjs/jwt';
...
...
  async signAccessToken(userId: string): Promise<string> {
    return this._jwtSrv.signAsync(userId, {
      expiresIn: ms('5 days'),
    });

报错

expiresIn字段(过期时间)设置不了

Error: invalid expiresIn option for string payload

探索

看了下这个expiresIn字段的类型约束,也没发现啥问题

  /** expressed in seconds or a string describing a time span [zeit/ms](https://github.com/zeit/ms.js).  Eg: 60, "2 days", "10h", "7d" */
    expiresIn?: string | number | undefined;

一开始写的是number类型的毫秒数,不行,改成了用ms这个包,还是不行。

应该怎样做才能解决这个问题呢?

阅读 6.4k
2 个回答

image.png

看下官方描述:

这里有写怎么填这个值,改成 expiresIn: '5 days', 试试

2022-2-21更

jsonwebtoken库里的测试用例也是这样写的啊,这里的用法应该没问题,是不是的@nest/jwtsignAsync做了什么处理,还是其他还有用的不对,用 sign() 试试?

1645447446(1).jpg

新手上路,请多包涵
return this._jwtSrv.signAsync({userId}, {
  expiresIn: ms('5 days'),
});

第一个参数改为对象就好了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题