[英]NestJS - JWTModule context dependency
运行我的应用程序后,我得到了这个...
[Nest] 5608 - 01.01.2021, 18:12:05 [ExceptionHandler] Nest can't resolve dependencies of the JwtService (?). Please make sure that the argument JWT_MODULE_OPTIONS at index [0] is available in the JwtModule context.
Potential solutions:
- If JWT_MODULE_OPTIONS is a provider, is it part of the current JwtModule?
- If JWT_MODULE_OPTIONS is exported from a separate @Module, is that module imported within JwtModule?
@Module({
imports: [ /* the Module containing JWT_MODULE_OPTIONS */ ]
})
有人可以告诉我我的代码有什么问题吗?
@Module({
imports: [TypeOrmModule.forFeature([User]),
JwtModule.register({
secretOrPrivateKey: 'secret12356789'
})
],
providers: [UserService]
})
export class AuthModule { }
@Module({
imports: [
TypeOrmModule.forRoot({
//
}),
AuthModule,
UserModule,
JwtModule
],
controllers: [AppController, UserController, AuthController ],
providers: [AppService, UserService, AuthService ],
})
export class AppModule {}
谢谢你的帮助 ////////////////////////////////////////////// ////////////////
在您的 AppModule 中, JwtModule
AppModule
但没有添加任何选项。 这就是导致问题的原因。 由于您已经在JwtModule
中注册了AuthModule
,因此这可能不是您想要做的。
您至少在两个地方( AuthModule
和AppModule
)注册了UserService
,您可能打算将UserService
添加到UserModule
的exports
中,然后将UserModule
添加到需要UserService
的模块的imports
数组中。
TL;DR 请参阅,复制/粘贴示例。
最近有同样的问题。 正如 Nest.JS 建议的那样, JwtModule
可以在授权模块中声明: https://docs.nestjs.com/security/authentication 。 而且,是的,它应该用它的所有设置声明一次。 主题消息可能来自多个声明(其中一些没有JWT_MODULE_OPTIONS
)。 可以用一个准备好的工作示例来包装Jay 的响应。
所以 auth 模块应该如下所示:
//./authorization/authorization.module.ts
import { Module } from '@nestjs/common';
import { JwtModule } from '@nestjs/jwt';
import { AuthorizationController } from './authorization.controller';
import { AuthorizationService } from './authorization.service';
@Module({
imports: [
...
JwtModule.register({
secret: process.env.ACCESS_TOKEN_SECRET || 'SOME_SECURE_SECRET_jU^7',
signOptions: {
expiresIn: process.env.TOKEN_EXPIRATION_TIME || '24h',
}
}),
....
],
controllers: [AuthorizationController],
providers: [AuthorizationService],
exports: [AuthorizationService, JwtModule]//<--here exports JwtModule
//as a part of AuthorizationModule
})
export class AuthorizationModule {};
然后您的AppModule
将以这种方式从AuthorizationModule
注入导出的JwtModule
。
//./app.module.js
import { Module } from '@nestjs/common';
import { AuthorizationModule } from './authorization/authorization.module';
@Module({
imports: [
...
AuthorizationModule, //<-- here injects the set up JwtModule
//NB! No additional injections required!
...
],
...
})
export class AppModule {};
希望,这会有所帮助。 ;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.