You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NestJS中JwtService已从其他模块导出仍无法解析依赖问题

错误原因
  • 重复注册JwtService是核心诱因:你已经在AppModule中导入了封装好Jwt能力的AuthModule,但又在AppModule的providers数组中手动加入了JwtService。手动注册的JwtService实例没有绑定对应的JWT_MODULE_OPTIONS配置项,Nest无法解析依赖直接抛出错误。
  • AuthModule存在冗余配置:@nestjs/jwt的JwtModule.register执行时,已经自动完成了JwtService和对应配置项的注册与导出,你不需要手动在AuthModule的providers和exports中单独声明JwtService。
  • 额外注意你提供的AuthModule代码存在笔误:导入语句写的是import { TokenService } from './auth.service',但实际提供者用的是AuthService,这个笔误也会引发依赖查找失败。
修正方案

第一步:修正AuthModule配置

import { Module } from '@nestjs/common'
// 修正导入笔误
import { AuthService } from './auth.service'
import { JwtModule } from '@nestjs/jwt'

@Module({
  imports: [
    JwtModule.register({
          secret: "mysecret",
          signOptions: { expiresIn: "60s" },
        }),
  ],
  // 仅注册业务服务,Jwt相关实例由JwtModule提供
  providers: [AuthService], 
  // 仅导出对外暴露的AuthService即可,无需手动导出JwtService
  exports: [AuthService],
})
export class AuthModule {}

第二步:修正AppModule配置

@Module({
  imports: [
    AuthModule,
    // 其余依赖
  ],
  controllers: [AppController],
  // 删除重复注册的JwtService
  providers: [AppService],
})
export class AppModule {}
补充说明

如果你的业务需要在其他模块直接调用JwtService,不需要手动导出JwtService,直接在AuthModule的exports数组中加入JwtModule即可,JwtModule已经内置了JwtService的导出逻辑。

内容的提问来源于stack exchange,提问作者user842225

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:45:05