#typescript #nestjs #typeorm
Вопрос:
Я пытаюсь внедрить репозиторий пользователей в службу поддержки пользователей, но, похоже, соединение typeorm не устанавливается. Я погуглил об этой ошибке, но, похоже, ресурсов не так много.
Вот журнал ошибок
[Nest] 18226 - 2021. 11. 30. 오후 7:10:19 ERROR [ExceptionHandler] Nest can't resolve dependencies of the UserRepository (?). Please make sure that the argument Connection at index [0] is available in the TypeOrmModule context. Potential solutions: - If Connection is a provider, is it part of the current TypeOrmModule? - If Connection is exported from a separate @Module, is that module imported within TypeOrmModule? @Module({ imports: [ /* the Module containing Connection */ ] })
Вот коды
user.service.ts
@Injectable() export class UserService { constructor( @InjectRepository(User) private readonly user: Repositorylt;Usergt;, ) {} ... }
user.module.ts
@Module({ imports: [TypeOrmModule.forFeature([User])], providers: [UserService], exports: [UserService], controllers: [UserController], }) export class UserModule {}
приложение.модуль.ts
@Module({ imports: [ ConfigModule.forRoot({ ... }), TypeOrmModule.forRoot({ type: 'postgres', ..., synchronize: process.env.NODE_ENV !== 'prod', logging: process.env.NODE_ENV !== 'prod' amp;amp; process.env.NODE_ENV !== 'test', entities: [User, Wiki], }), MongooseModule.forRoot(process.env.MONGODB_ROOT), UserModule, WikiModule, ], controllers: [], providers: [], }) export class AppModule {}
Комментарии:
1. Вы установили все зависимости модуля typeorm:
npm install --save @nestjs/typeorm typeorm pg
?2. Да, все установлено. Его версии: 8.0.2, 0.2.41, 8.7.1 соответственно
3. покажите нам все случаи
UserRepository
. Похоже, вы добавили его вproviders
массив, но вам не следует этого делать4. Информация о пользователе появляется только в файле user.service.ts, который я опубликовал выше. UserService — единственное место, где вводится UserRepository. И TypeOrmModule.forFeature используется только при импорте массива в гнездовых модулях.
Ответ №1:
Для тех, кто борется с этой проблемой, просто попробуйте TypeOrmModule.forRootAsync()
TypeOrmModule.forRootAsync({ useFactory: () =gt; ({ type: 'postgres', ..., synchronize: process.env.NODE_ENV !== 'prod', logging: process.env.NODE_ENV !== 'prod' amp;amp; process.env.NODE_ENV !== 'test', }), })