在我的nestjs应用程序中,我有一个User
和Auth
模块。 Auth
模块依赖于User
模块来验证用户。
现在,即使我在模块级别正确连接了依存关系,也遇到了依存关系解析错误(请参阅最后一部分)。
作为参考,这是我的模块文件和相关服务。
src / user / user.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { UserService } from './services/user.service';
import { UserController } from './user.controller';
import { UserRepository } from './user.repository';
@Module({
controllers: [UserController],
imports: [TypeOrmModule.forFeature([UserRepository])],
providers: [UserService],
exports: [UserService],
})
export class UserModule {}
src / user / user.service.ts
/** imports... **/
@Injectable()
export class UserService {
constructor(
private readonly userRepository: UserRepository
) {
}
/** some codes **/
}
src / auth / auth.module.ts
import { Module } from '@nestjs/common';
import { JwtModule } from '@nestjs/jwt';
import { PassportModule } from '@nestjs/passport';
import { UserModule } from '../user/user.module';
import { AuthController } from './auth.controller';
import { AuthService } from './services/auth.service';
import { JwtStrategy } from './strategies/jwt.strategy';
const jwtModule = JwtModule.register({
secret: "SOME_SECRET",
signOptions: { expiresIn: "1d" },
});
@Module({
imports: [jwtModule, PassportModule, UserModule],
providers: [AuthService, JwtStrategy],
controllers: [AuthController],
exports: [AuthService],
})
export class AuthModule {}
src / auth / auth.service.ts
import { Injectable } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import { Status } from '../../shared';
import { UserEntity, UserService } from '../../user';
@Injectable()
export class AuthService {
constructor(
private readonly jwtService: JwtService,
private readonly userService: UserService,
) {
}
}
...并且供参考,我在user
模块文件夹中有一个桶形文件。
src / user / index.ts
export * from './user.entity';
export * from './user.interface';
export * from './services/user.service';
app.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AuthModule } from './auth/auth.module';
import { CoreModule } from './core/core.module';
import { ConfigService } from './core/services/config.service';
import { SharedModule } from './shared/shared.module';
import { UserModule } from './user/user.module';
/**
* ORM configuration
*/
const typeORM = TypeOrmModule.forRoot({
/** typeorm configuration **/
});
@Module({
imports: [
typeORM,
CoreModule,
SharedModule,
UserModule,
AuthModule,
],
})
export class AppModule {}
如您所见,我的UserService
类已导出到UserModule
中。 UserService
也用@Injectable
装饰器装饰。最后,请注意,我在UserModule
的导入部分中导入了AuthModule
。
但是当我尝试运行该应用程序时,出现此错误:
Nest can't resolve dependencies of the AuthService (JwtService, ?). Please make sure that the argument dependency at index [1] is available in the AuthModule context.
鉴于以上代码文件,嵌套没有理由无法在UserService
中找到AuthService
。我想念什么吗?
答案 0 :(得分:0)
正如@nerdy野兽在评论中指出的那样,该问题实际上与从桶形文件中导入文件有关。就我而言,它与typeorm
有关-如此处https://github.com/typeorm/typeorm/issues/420#issuecomment-307219380所述。