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

NestJS中JwtService报JWT_MODULE_OPTIONS依赖缺失错误如何解决

问题原因

这是配置错误,不是@nestjs/jwt的bug,问题出在两处配置不当:

  1. 你将服务类JwtService放到了AuthModule的imports数组中,imports字段仅允许传入Nest模块类,不能传入服务提供者。Nest误将JwtService当作模块解析,自然找不到它依赖的配置项JWT_MODULE_OPTIONS,触发第一个报错。
  2. 你在AppModule中直接使用AuthMiddleware时,Nest会在AppModule的注入上下文里查找中间件的依赖JwtService,但之前的AuthModule没有将JwtService导出,导致AppModule无法获取到该实例,触发第二个报错。

修复步骤

仅需要修改auth.module.ts的配置即可:

  • 删除imports数组中的JwtService
  • 在exports数组中新增JwtService,让导入AuthModule的其他模块可以访问到JwtService实例

修改后的auth.module.ts代码如下:

import { Module } from '@nestjs/common';
import { JwtModule, JwtService } from '@nestjs/jwt';
import { AuthMiddleware } from './auth.middleware';

@Module({
  imports: [
    JwtModule.register({
      secret: process.env.JWT_SECRET,
      signOptions: { expiresIn: '1day' },
    }),
  ],
  providers: [AuthMiddleware],
  exports: [AuthMiddleware, JwtService],
})
export class AuthModule {}

额外注意

如果你的JWT_SECRET是写在.env文件中,需要确保项目根模块已经配置了ConfigModule加载环境变量,否则process.env.JWT_SECRET会返回undefined,可能引发后续的JWT校验错误。


内容的提问来源于stack exchange,提问作者Luís Felipe de Souza Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:06:04