【问题标题】:Nestjs, inject JwtService in controllerNestjs,在控制器中注入 JwtService
【发布时间】:2021-01-01 11:57:30
【问题描述】:

我正在尝试使用来自 nestjs 的 JwtService 来解码控制器中的 access_token,但我不知道如何在构造函数中注入此服务。

这是我的代码:

import { JwtService } from '@nestjs/jwt';
import { Controller, Get, Post, Body, Req } from '@nestjs/common';
@Controller('event')
export class EventController {
    constructor(
        private readonly jwtService: JwtService) {}

@Get('/questions')
    async getQuestionsAsync(): Promise<Question[]> {
    const decodedToken = this.jwtService.decode(accessToken);
    ...
}

我收到此错误:

错误:Nest 无法解析 EventController(EventService,?)的依赖关系。请确保索引 [1] 处的参数 JwtService 在 EventModule 上下文中可用。

我已经尝试将@Inject(JwtService)作为属性添加到私有变量中,但是错误是一样的。

那么,如何在控制器中正确注入 JwtService 呢?

【问题讨论】:

    标签: typescript dependency-injection nestjs


    【解决方案1】:

    您需要确保将JwtModule 添加到EventModuleimports 数组中配置模块导入到EventModule

    【讨论】:

    • 目前,它没有在 event.module.ts 中导入,如果我在导入数组中添加 JwtModule,我开始收到错误消息“请确保参数 JWT_MODULE_OPTIONS 在JwtModule context" 我只是想使用JwtService来解码一个token(所以我不需要安装jsonwebtoken)
    • 您是否使用其注册选项导入了它? JwtModule.register()。您需要确保通过选项传递 jwt 秘密,否则它实际上没有办法验证令牌,虽然解码不需要验证,但它仍然是一个好习惯
    • 关键是.register(我错过了)!谢谢杰
    猜你喜欢
    • 2021-04-08
    • 2020-08-27
    • 2020-04-28
    • 1970-01-01
    • 2021-12-30
    • 2020-04-10
    • 1970-01-01
    • 2019-02-26
    • 2013-01-25
    相关资源
    最近更新 更多