NestJS JwtModule配置报错:secretOrPrivateKey must have a value
解决NestJS JwtModule "secretOrPrivateKey must have a value" 错误
你的Auth模块代码如下:
import { Module } from '@nestjs/common'; import { userService } from 'src/users/users.service'; import { JwtModule } from '@nestjs/jwt'; import { authControler } from './auth.controler'; import { JwtService } from '@nestjs/jwt'; import { authService } from './auth.service'; import { UsersModule } from 'src/users/users.module'; import { PassportModule } from '@nestjs/passport'; import { TypeOrmModule } from '@nestjs/typeorm'; import { users } from 'src/users/user.entity'; import { JwtStrategy } from './stratiges/jwt.stratige'; import { LocalStrategy } from './stratiges/local.stratige'; @Module({ imports: [ TypeOrmModule.forFeature([users]), UsersModule, PassportModule, JwtModule.register({ secret: 'this should be env var', signOptions: { expiresIn: '60s' }, }), ], controllers: [authControler], providers: [JwtService, authService, userService, JwtStrategy, LocalStrategy], }) export class authModule {}
问题原因
你手动在providers数组中添加了JwtService,而JwtModule.register()已经会自动创建并提供配置好的JwtService实例。手动注入的JwtService没有获取到你配置的secret参数,导致抛出"secretOrPrivateKey must have a value"错误。
解决步骤
移除手动注入的JwtService
修改providers数组,删除JwtService,让JwtModule自动管理实例:providers: [authService, userService, JwtStrategy, LocalStrategy],检查JwtStrategy的依赖注入
确保你的JwtStrategy是通过依赖注入获取JwtService,而非手动实例化。示例构造函数:constructor(private readonly jwtService: JwtService) {}规范代码命名(可选但推荐)
NestJS遵循大驼峰命名规范,修正以下命名:userService→UserServiceauthControler→AuthControllerauthService→AuthServiceauthModule→AuthModuleusers→User(实体类名)jwt.stratige→jwt.strategy(文件名)
规范命名能避免潜在的导入或依赖解析问题。
内容的提问来源于stack exchange,提问作者amgad abdo14x
相关产品推荐
相关产品推荐

