【问题标题】:NestJS authGuard dosent worksNestJS authGuard 剂量有效
【发布时间】:2021-04-29 13:38:34
【问题描述】:

我正在实现 @nestjs/passport ('jwt') 并使用(完全像在说明中一样)@UseGuards(AuthGuard()) 装饰器,但我遇到了以下异常:

common_1.Optional 不是函数

有人知道可能是什么问题吗?

依赖关系:

"@nestjs/common": "^5.0.0",

"@nestjs/core": "^5.0.0",
"@nestjs/cqrs": "^5.1.1",
"@nestjs/jwt": "^0.2.0",
"@nestjs/mongoose": "^5.1.0",
"@nestjs/passport": "^5.1.0",
"@nestjs/swagger": "^2.4.4",
"@nestjs/typeorm": "^5.2.2",
"automapper-ts": "^1.9.0",
"config": "^2.0.1",
"fastify-formbody": "^2.0.0",
"lodash": "^4.17.10",
"mongodb": "^3.1.6",
"mongoose": "^5.2.9",
"mysql": "^2.16.0",
"nestjs-rmq": "^0.1.3",
"nestjs-typegoose": "^5.0.1",
"passport": "^0.4.0",
"passport-jwt": "^4.0.0",
"reflect-metadata": "^0.1.12",
"rxjs": "^6.0.0",
"typegoose": "^5.4.0",
"typeorm": "^0.2.7",
"typescript": "^2.6.2",

【问题讨论】:

  • 你能添加你的 package.json 依赖吗?您是否尝试过删除 node_modules 并运行 npm install?
  • 嘿。是的,我试图删除 node_modules .. 我在问题中添加了依赖项.. 谢谢!!
  • 所有必要的软件包都已安装。您可以尝试运行npm update,因为有些版本有点过时了。我刚刚使用 jwt 模块建立了一个空项目,它对我有用。因此,为了进一步调查,您需要添加代码的(相关部分)或存储库来重现它。
  • 太棒了....npm update 成功了!!谢谢!!!!
  • 很高兴它为您工作。 :-) 如果您的问题已解决,请考虑接受一个答案,以便其他人知道该问题已得到解答。

标签: javascript express authentication nestjs


【解决方案1】:

依赖关系已过期。尝试运行npm update

【讨论】:

    【解决方案2】:

    也许我不太理解这个问题,但是要使用守卫,你可以给一个守卫实例或给类并让嵌套创建实例,守卫是**不是函数*

    @UseGuards(AuthGuard()) 应该是: @UseGuards(new AuthGuard()) 或者 @UseGuards(AuthGuard)

    【讨论】:

      【解决方案3】:

      看起来你使用旧的依赖项。

      安装 npm g npm-check

      运行 npm-check -u

      https://www.npmjs.com/package/npm-check

      【讨论】:

        【解决方案4】:

        依赖问题

        试试这个:

        $ sudo npm install -g npm-check

        $ npm-check -u

        【讨论】:

          猜你喜欢
          • 2021-06-27
          • 2023-01-04
          • 2022-08-12
          • 2021-09-03
          • 1970-01-01
          • 2019-01-26
          • 2020-03-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多