我遵循了Nest JS崩溃教程Youtube Link,我遵循了这个,但是当我在服务中导入接口时,它显示错误
Nest无法解析ItemsService(?)的依赖项。请确保索引[0]处的参数在AppModule上下文中可用。
我我克隆了教程中给出的仓库,它工作正常,但当我复制该仓库的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>) {}
});
}
当我注解构造函数行时,它工作正常,我认为问题出在这一行,
从“mongoose”导入{ Model };
因为当我悬停在这一行时,它显示无法找到此模块的声明。我甚至尝试复制工作代码的package.json文件进行测试,但错误仍然相同
我的模块项包含控制器文件、服务文件、模块文件、dto文件、接口文件、模式文件、
9条答案
按热度按时间7kjnsjlb1#
为了解决这个问题,您必须从
app.module.ts
文件中删除ItemsController和ItemsService导入。这是解决方案,因为:
1.您已经在
items.module.ts
文件中导入了ItemsController和ItemsService,因此没有必要在app.module.ts
文件中再次导入它们。1.在您的
items.module.ts
中,您有下一行:,这是在
items.service.ts
文件中进行依赖注入所必需的,因为您可以在app.module.ts
文件中检查,您没有该行。1.当然,您可以将该行添加到您的
app.module.ts
文件中,但这样就没有必要创建items.module.ts
文件。检查我的repo xD。
eqfvzcg82#
请从
AppModule
中删除ItemsController
和ItemsService
。无需将它们包含在AppModule
中,因为您已经将ItemsModule
导入到AppModule
中。sqougxex3#
我也面临着同样的问题,我从www.example.com中删除了ItemsController和ItemsService文件app.module.ts.now,它可以工作fine.so,app.module.ts看起来像这样。
voase2hg4#
在应用程序模块中不使用其他控制器或提供程序,如UserController
app.module.ts
以及其他模块,如user.module.ts
fcipmucu5#
如果有两个模块相互依赖,不要在两个模块中都使用forwardRef()直接导入它们
源代码Circular dependency
而在另一个模块中
smdnsysy6#
我是这样解决的-
这里我添加了我的实体文件User-
TypeOrmModule.forFeature([User]),
并解决了它。qxgroojn7#
我也遇到了同样的问题。对我来说,我错过了其中一个子模块中提供者字段中的ServiceClass。然后我像下面这样指定它,错误就消失了。
j8yoct9x8#
请将@ItemModule导入到您要使用它的其他模块中。https://docs.nestjs.com/security/authentication
0kjbasz69#
我把它加到物品模块里