首页 > 解决方案 > Nest 无法解析 ItemsService (?) 的依赖关系。请确保索引 [0] 处的参数在 AppModule 上下文中可用

问题描述

我遵循了 Nest JS Crash 教程,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>) {}
});

}

当我评论构造函数行时,它工作正常,我认为问题在于这一行,

从“猫鼬”导入{模型};

因为当我将鼠标悬停在这一行时,它显示找不到该模块的声明。我什至尝试复制工作代码的 package.json 文件进行测试,但错误仍然相同

我的模块项目包含,控制器文件,服务文件,模块文件,dto 文件,接口文件,模式文件,

标签: typescriptnestjs

解决方案


为了解决它,您必须从app.module.ts文件中删除 ItemsController 和 ItemsService 导入。

这是解决方案,因为:

  1. 您已经在文件中导入了 ItemsController 和 ItemsService,items.module.ts因此无需在文件中再次导入它们app.module.ts
  2. 在你的items.module.ts你有下一行:
    @Module({
      imports: [MongooseModule.forFeature([{ name: 'Item', schema: ItemSchema }])],
      ...
    })
    
    这是使items.service.ts文件中的依赖注入工作所必需的,因为您可以签入 app.module.ts没有该行的文件。
  3. 当然,您可以将该行添加到您的app.module.ts文件中,但是创建该文件是没有意义的 items.module.ts

检查我的回购xD。


推荐阅读