【发布时间】:2020-07-15 17:41:10
【问题描述】:
我在使用 Nestjs 时遇到了错误。此代码有效,但是当我将类名 (UserEntity) 更改为 User 时,这将失败。任何想法为什么会发生这种情况?
-
这工作
UserEntity -
它不起作用
User
Nest can't resolve dependencies of the UserRepository (?, Sequelize). Please make sure that the argument UserRepository at index [0] is available in the UserModule context.
shield-v2_1 | 2020-07-15T17:38:40.259161456Z
shield-v2_1 | 2020-07-15T17:38:40.259165312Z Potential solutions:
shield-v2_1 | 2020-07-15T17:38:40.259168488Z - If UserRepository is a provider, is it part of the current UserModule?
shield-v2_1 | 2020-07-15T17:38:40.259172757Z - If UserRepository is exported from a separate @Module, is that module imported within UserModule?
shield-v2_1 | 2020-07-15T17:38:40.259176733Z @Module({
shield-v2_1 | 2020-07-15T17:38:40.259179703Z imports: [ /* the Module containing UserRepository */ ]
shield-v2_1 | 2020-07-15T17:38:40.259182257Z })
shield-v2_1 | 2020-07-15T17:38:40.259184650Z +94ms
shield-v2_1 | 2020-07-15T17:38:40.259187564Z Error: Nest can't resolve dependencies of the UserRepository (?, Sequelize). Please make sure that the argument UserRepository at index [0] is available in the UserModule context.
shield-v2_1 | 2020-07-15T17:38:40.259190324Z
shield-v2_1 | 2020-07-15T17:38:40.259192884Z Potential solutions:
shield-v2_1 | 2020-07-15T17:38:40.259195330Z - If UserRepository is a provider, is it part of the current UserModule?
shield-v2_1 | 2020-07-15T17:38:40.259197909Z - If UserRepository is exported from a separate @Module, is that module imported within UserModule?
shield-v2_1 | 2020-07-15T17:38:40.259200479Z @Module({
shield-v2_1 | 2020-07-15T17:38:40.259202883Z imports: [ /* the Module containing UserRepository */ ]
shield-v2_1 | 2020-07-15T17:38:40.259205366Z })
shield-v2_1 | 2020-07-15T17:38:40.259207763Z
shield-v2_1 | 2020-07-15T17:38:40.259210212Z at Injector.lookupComponent (/app/node_modules/@nestjs/core/injector/injector.js:180:19)
shield-v2_1 | 2020-07-15T17:38:40.259213184Z at Injector.resolveComponentInstance (/app/node_modules/@nestjs/core/injector/injector.js:148:44)
shield-v2_1 | 2020-07-15T17:38:40.259215943Z at Injector.resolveSingleParam (/app/node_modules/@nestjs/core/injector/injector.js:137:21)
shield-v2_1 | 2020-07-15T17:38:40.259218639Z at resolveParam (/app/node_modules/@nestjs/core/injector/injector.js:102:49)
shield-v2_1 | 2020-07-15T17:38:40.259221192Z at Array.map (<anonymous>)
shield-v2_1 | 2020-07-15T17:38:40.259224130Z at Injector.resolveConstructorParams (/app/node_modules/@nestjs/core/injector/injector.js:117:58)
shield-v2_1 | 2020-07-15T17:38:40.259226732Z at Injector.loadInstance (/app/node_modules/@nestjs/core/injector/injector.js:81:20)
shield-v2_1 | 2020-07-15T17:38:40.259229282Z at Injector.loadProvider (/app/node_modules/@nestjs/core/injector/injector.js:38:20)
shield-v2_1 | 2020-07-15T17:38:40.259231826Z at Promise.all.wrappers.map.item (/app/node_modules/@nestjs/core/injector/instance-loader.js:43:62)
shield-v2_1 | 2020-07-15T17:38:40.259234478Z at Array.map (<anonymous>)
shield-v2_1 | 2020-07-15T17:38:40.259236997Z at InstanceLoader.createInstancesOfProviders (/app/node_modules/@nestjs/core/injector/instance-loader.js:43:36)
shield-v2_1 | 2020-07-15T17:38:40.259253968Z at Promise.all.map (/app/node_modules/@nestjs/core/injector/instance-loader.js:28:24)
shield-v2_1 | 2020-07-15T17:38:40.259258268Z at Array.map (<anonymous>)
shield-v2_1 | 2020-07-15T17:38:40.259260830Z at InstanceLoader.createInstances (/app/node_modules/@nestjs/core/injector/instance-loader.js:27:49)
shield-v2_1 | 2020-07-15T17:38:40.259263419Z at InstanceLoader.createInstancesOfDependencies (/app/node_modules/@nestjs/core/injector/instance-loader.js:17:20)
shield-v2_1 | 2020-07-15T17:38:40.259266074Z at exceptions_zone_1.ExceptionsZone.asyncRun (/app/node_modules/@nestjs/core/nest-factory.js:82:38)
shield-v2_1 | 2020-07-15T17:38:40.259268658Z at process._tickCallback (internal/process/next_tick.js:68:7)
shield-v2_1 | 2020-07-15T17:38:40.259271155Z at Function.Module.runMain (internal/modules/cjs/loader.js:744:11)
shield-v2_1 | 2020-07-15T17:38:40.259273674Z at startup (internal/bootstrap/node.js:285:19)
shield-v2_1 | 2020-07-15T17:38:40.259276140Z at bootstrapNodeJSCore (internal/bootstrap/node.js:739:3)
/* user.ts */
import {Column, Model, Table} from 'sequelize-typescript';
@Table({tableName: 'users'})
export default class UserEntity extends Model<UserEntity> {
@Column
username: string;
@Column
email: string;
@Column({field: 'full_name'})
fullName: string;
@Column({field: 'is_app_account'})
isAppAccount: number;
@Column({field: 'created_at'})
createdAt: Date;
@Column({field: 'updated_at'})
updatedAt: Date;
@Column({field: 'manager_id'})
managerId: number;
}
// user.repository.ts
import {Injectable} from '@nestjs/common';
import {InjectModel} from '@nestjs/sequelize';
import {Sequelize} from 'sequelize-typescript';
import User from './user';
import BaseRepository from '../../common/base.repository';
@Injectable()
export default class UserRepository extends BaseRepository {
constructor(
@InjectModel(User)
protected model: typeof User,
protected sequelize: Sequelize,
) {
super(model, sequelize);
}
}
// user module index.ts
import {Module} from '@nestjs/common';
import {SequelizeModule} from '@nestjs/sequelize';
import InteractionModule from '../interactions';
import User from './user';
import UserRepository from './user.repository';
@Module({
imports: [
SequelizeModule.forFeature([User]),
InteractionModule,
],
controllers: [],
providers: [UserRepository],
exports: [UserRepository],
})
export default class UserModule {}
export {
User,
};
// app.module
import {
Module,
} from '@nestjs/common';
import {
connectionToCoreDB,
connectionToInteractionDB
} from './config/database/getConnectionOptions';
import AppController from './app.controller';
import {InteractionEntity} from './apis/interactions';
import UserModule, {User} from './apis/users';
@Module({
imports: [
connectionToCoreDB([
User
]),
connectionToInteractionDB([InteractionEntity]),
UserModule,
// ProjectModule,
],
controllers: [AppController],
})
export class AppModule {
}
【问题讨论】:
-
能否分享您的服务文件。我需要知道您是如何将存储库注入服务的。
标签: javascript typescript nestjs