我遵循了Nest JS崩溃教程Youtube Link, 我遵循了这个步骤,但是当我在服务中导入界面时,它显示错误
嵌套无法解析ItemsService(?)的依赖项。请确保AppModule上下文中索引为[0]的参数可用。
我克隆了教程中给定的存储库,它工作正常,但是当我将该存储库的src文件夹复制到我的项目中时,它将引发错误。 这是我的服务文件
import { Injectable } from '@nestjs/common';
import { Item } from './interfaces/item.interface';
import { Model } from 'mongoose';
import { ItemsModule } from './items.module'
import { InjectModel } from '@nestjs/mongoose';
@Injectable()
export class ItemsService {
constructor(@InjectModel('Item') private readonly itemModel: Model<Item>) {}
});
}
当我评论构造函数行时,它工作正常, 我认为问题在于这行,
从“猫鼬”导入{模型};
因为当我将鼠标悬停在这条线上时,它表明找不到该模块的声明。 我什至尝试复制工作代码的package.json文件进行测试,但错误仍然相同
我的模块项目包含控制器文件,服务文件,模块文件, dto文件,界面文件,架构文件
答案 0 :(得分:2)
我也遇到了同样的问题。我从app.module.ts中删除了ItemsController和ItemsService文件。现在它可以正常工作了,所以app.module.ts看起来像这样。
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ItemsController } from './items/items.controller';
import { ItemsService } from './items/items.service';
import {MongooseModule} from '@nestjs/mongoose';import { ItemsModule } from
'./items/items.module';
import config from './config/keys';
@Module({
imports: [ItemsModule,MongooseModule.forRoot(config.mongoURI)],
controllers: [AppController ],
providers: [AppService ],
})
export class AppModule {}
答案 1 :(得分:1)
要解决该问题,您必须从app.module.ts
文件中删除ItemsController和ItemsService导入。
这是解决方案,因为:
items.module.ts
文件中导入了ItemsController和ItemsService,因此没有必要导入
再次将它们放在app.module.ts
文件中。items.module.ts
中,下一行:
@Module({
imports: [MongooseModule.forFeature([{ name: 'Item', schema: ItemSchema }])],
...
})
为了使items.service.ts
文件中的依赖项注入有效,这是必需的,因为您可以在
app.module.ts
文件中没有该行。app.module.ts
文件中,但是没有必要创建
items.module.ts
文件。检查我的repo xD。
答案 2 :(得分:0)
请从 ItemsController
中删除 ItemsService
和 AppModule
。无需将它们包含在 AppModule
中,因为您已经将 ItemsModule
导入到 AppModule
中。
app.module.ts
import { AppService } from './app.service';
import { ItemsModule } from "./items/items.module";
import { MongooseModule} from '@nestjs/mongoose';
import config from './config/keys';
@Module({
imports: [ItemsModule, MongooseModule.forRoot(config.mongoURI)],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
items.service.ts
import { Injectable } from '@nestjs/common';
import { Item } from './interfaces/items.interface';
import { Model } from 'mongoose';
import { InjectModel } from '@nestjs/mongoose';
@Injectable()
export class ItemsService {
constructor(@InjectModel('Item') private readonly itemModel:Model<Item>){}
async findAll(): Promise<Item[]> {
return await this.itemModel.find();
}
async fineOne(id: string): Promise<Item> {
return await this.itemModel.findOne({_id: id});
}
}