gpt4 book ai didi

javascript - Nest 无法解析 USERRepository 的依赖项

转载 作者:搜寻专家 更新时间:2023-10-30 22:04:41 25 4
gpt4 key购买 nike

这真是一个意想不到的问题。

当我在终端输入“npm run start”时,出现错误。

[Nest] 40671   - 2018-10-20 17:46:37   [ExceptionHandler] Nest can't resolve dependencies of the USERRepository (?). Please make sure that the argument at index [0] is available in the current context. +22ms
Error: Nest can't resolve dependencies of the USERRepository (?). Please make sure that the argument at index [0] is available in the current context.
at Injector.lookupComponentInExports (/Users/huxiao/OneDrive/Coding/wtapm/node_modules/@nestjs/core/injector/injector.js:139:19)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:160:7)
at Function.Module.runMain (module.js:703:11)
at Object.<anonymous> (/Users/huxiao/OneDrive/Coding/wtapm/node_modules/ts-node/src/_bin.ts:177:12)
at Module._compile (module.js:660:30)
at Object.Module._extensions..js (module.js:671:10)
at Module.load (module.js:573:32)
at tryModuleLoad (module.js:513:12)
at Function.Module._load (module.js:505:3)
1: node::Abort() [/usr/local/bin/node]
2: node::Chdir(v8::FunctionCallbackInfo<v8::Value> const&) [/usr/local/bin/node]
3: v8::internal::FunctionCallbackArguments::Call(void (*)(v8::FunctionCallbackInfo<v8::Value> const&)) [/usr/local/bin/node]
4: v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments) [/usr/local/bin/node]
5: v8::internal::Builtin_Impl_HandleApiCall(v8::internal::BuiltinArguments, v8::internal::Isolate*) [/usr/local/bin/node]
6: 0x909046042fd
Abort trap: 6

我尽了我所能,但我无法解决它。我的代码如下:

下面是 [app.module.ts]

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UserModule } from './user/user.module';
import {TypeOrmModule} from '@nestjs/typeorm';

@Module({
imports: [TypeOrmModule.forRoot(
{
"type":"postgres",
"name":"pm_main",
"host": "localhost",
"port": 5432,
"username": "postgres",
"password": "test",
"database": "test",
"synchronize":true
}
),UserModule],
controllers: [AppController],
providers: [AppService]
})
export class AppModule {}

下面是[user.service.ts]

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { USER } from './models/user.model';
import { Repository } from 'typeorm';

@Injectable()
export class UserService {

constructor(
@InjectRepository(USER)
private readonly userRepository: Repository<USER>
){}

async findAllUser(): Promise<USER[]> {
return await this.userRepository.find();
}
}

下面是[user.module.ts]

import { Module } from '@nestjs/common';
import { UserController } from './user.controller';
import { UserService } from './user.service';
import { PROJECT } from 'project/models/project.model';
import { TypeOrmModule } from '@nestjs/typeorm';
import { USER } from './models/user.model';

@Module({
imports: [TypeOrmModule.forFeature([USER])],
providers: [UserService],
controllers: [UserController],
exports: [UserService]
})
export class UserModule {}

我 100% 遵循了文档的示例,但它似乎不正确。

更多信息,package.json中的依赖如下:

"dependencies": {
"@nestjs/common": "^5.3.9"
"@nestjs/core": "^5.3.10",
"@nestjs/typeorm": "^5.2.0",
"ajv": "^6.5.4",
"class-validator": "^0.9.1",
"fastify-formbody": "^2.0.0",
"jsonwebtoken": "^8.3.0",
"passport": "^0.4.0",
"passport-jwt": "^4.0.0",
"pg": "^7.4.3",
"reflect-metadata": "^0.1.12",
"rxjs": "^6.0.0",
"typeorm": "^0.2.7",
"typescript": "^2.6.2"

还有 [user.model.ts] 作为 USER 如下所示

import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToMany, JoinTable } from "typeorm";
import { IsNotEmpty, IsDate, IsEmail, IsArray, IsEnum, IsJSON } from 'class-validator'
import { user_Gender, user_Status } from "./user.enum";
import { PROJECT } from 'project/models/project.model';

@Entity()
export class USER {
@PrimaryGeneratedColumn('uuid')
id:string;

@Column({unique:true})
@IsNotEmpty()
username:string;

@Column()
password:string;

@Column()
@IsEnum({user_Gender})
gender:string;

@Column("jsonb")
@IsJSON()
realname?:{
firstName:string;
lastName:string;
middleName:string;
};

@Column()
@IsDate()
birthday?:Date;

@CreateDateColumn()
createAt:Date;

@UpdateDateColumn()
updateAt:Date;

@Column()
@IsArray()
industry?:string[];

@Column()
@IsEmail()
email?:string;

@Column()
@IsArray()
org?:string[];

@Column()
current_org?:string;

@Column("jsonb")
@IsJSON()
user_location?:{
country:string;
province_or_state:string;
city:string;
district:string;
address:string;
};

@Column("jsonb")
@IsJSON()
mobilephone?:{code:string,number:string};

@Column("text")
avater:string;

@Column()
@IsArray()
receive_account?:[{
name:string,
number:string,
bank:string,
swiftCode?:string,
address?:string}]

@Column()
@IsDate()
last_loginAt?:Date;

@Column()
@IsEnum(user_Status)
status:string;

@Column()
projectsId:[];

@ManyToMany(type => PROJECT, project => project.members)
@JoinTable()
projects:PROJECT[];

}

最佳答案

问题

问题是您在根导入中为数据库分配了一个名称:

imports: [TypeOrmModule.forRoot({
"type":"postgres",
"name":"pm_main",
^^^^^^^^^^^^^^^^^
"host": "localhost",
"port": 5432,
"username": "postgres",
"password": "test",
"database": "test",
"synchronize":true
}

但是你不会在 forFeature 导入中使用相同的名称:

imports: [TypeOrmModule.forFeature([USER])],


解决方案

a) 因此要么将名称添加到 forFeature 导入:

TypeOrmModule.forFeature([USER], 'pm_main')

b) 或从您的 forRoot 导入中删除 "name":"pm_main",。如果您只有一个数据库,则可以只依赖隐式默认名称。

关于javascript - Nest 无法解析 USERRepository 的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52904724/

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