gpt4 book ai didi

typescript - NestJS 无法解析 JWT_MODULE_OPTIONS 的依赖

转载 作者:行者123 更新时间:2023-12-04 12:39:44 25 4
gpt4 key购买 nike

我无法编译此错误:

Nest 无法解析 JWT_MODULE_OPTIONS (?) 的依赖关系。请确保索引 [0] 处的参数在 JwtModule 上下文中可用。 +52ms

我看到了模块和服务的类似依赖问题,但它们对我不起作用。在我的 中使用 JwtModule auth.module.ts :

import { JwtModule } from '@nestjs/jwt';
@Module({
imports: [
TypeOrmModule.forFeature([User, Role]),
ConfigModule,
PassportModule.register({ defaultStrategy: 'jwt' }),
JwtModule.registerAsync({
inject: [ConfigService],
useFactory: async (configService: ConfigService) => ({
secretOrPrivateKey: config.jwtSecret,
type: configService.dbType as any,
host: configService.dbHost,
port: configService.dbPort,
username: configService.dbUsername,
password: configService.dbPassword,
database: configService.dbName,
entities: ['./src/data/entities/*.ts'],
signOptions: {
expiresIn: config.expiresIn,
},
}),
}),

],
providers: [AuthService, JwtStrategy],
controllers: [AuthController],
})
export class AuthModule { }

我不知道如何修复这个错误...使用 jwt 6.1.1

编辑:在我之前的项目中使用 jwt 6.0.0,所以我降级了它,但问题没有解决。

最佳答案

首先,您将 TypeORMModule 配置与 JWTModule 配置混合在一起。

根据 @nestjs/jwt source code (和 docs)、secretOrPrivateKeysignOptions .所有其他参数似乎都是 TypeORMModule 配置的一部分。

其次,ConfigService(它是 JWT 模块的依赖项 [0])似乎并不存在于您的代码中的任何地方。因此,您缺少对内部存在 ConfigService 的模块的导入。

这就是依赖加载失败的原因(这就是错误抛出的意思)

请注意,在您的代码中,您缺少一个模块的导入(以下示例中的 ConfigModule),该模块是保存 ConfigService 的模块。否则就没有办法从任何地方注入(inject)这个 ConfigService!

JwtModule.registerAsync({
imports: [ConfigModule], // Missing this
useFactory: async (configService: ConfigService) => ({
signOptions: {
expiresIn: config.expiresIn,
},
secretOrPrivateKey: config.jwtSecret,
}),
inject: [ConfigService],
}),

关于typescript - NestJS 无法解析 JWT_MODULE_OPTIONS 的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57463523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com