📜  nestjs 在未知属性上失败 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:17:51.151000             🧑  作者: Mango

NestJS 在未知属性上失败 - TypeScript

当使用 NestJS 框架时,可能会遇到以下错误:

[Nest] 60111   - 2021-10-14 6:25:45 AM   [ExceptionHandler] Nest can't resolve dependencies of the SomeService (?). Please make sure that the argument dependency at index [0] is available in the TestModule context.

Potential solutions:
- If dependency is a provider, is it part of the current TestModule?
- If dependency is exported from a separate @Module, is that module imported within TestModule?
  @Module({
    imports: [ /* the Module containing dependency */ ]
  })

这个错误通常是由于在您的代码中使用了未知的属性或依赖关系,因此 NestJS 无法解析它。

解决方法

以下是可能的解决方案:

检查代码

首先,请仔细检查您的代码以查找拼写错误、语法错误或其他常见错误。

检查模块导入

如果您使用了提供者、控制器或其他模块,确保它们在当前模块的 imports 数组中。例如:

import { SomeModule } from './some.module';

@Module({
  imports: [SomeModule],
  controllers: [...],
  providers: [...],
})
export class AppModule {}
使用 @Inject() 装饰器

如果您使用了注入的服务,请使用 @Inject() 装饰器来注入依赖项。例如:

import { Injectable, Inject } from '@nestjs/common';
import { SomeDependency } from './some.dependency';

@Injectable()
export class SomeService {
  constructor(@Inject(SomeDependency) private readonly dependency: SomeDependency) {}
  ...
}
检查提供者

如果您使用的供应商是外部模块的一部分,请确保正确导入和使用它们。如果供应商不是外部模块的一部分,请确保它在您的当前模块中提供。

例如:

import { Module } from '@nestjs/common';
import { SomeService } from './some.service';

@Module({
  controllers: [],
  providers: [SomeService],
})
export class SomeModule {}
@nestjs/config 管理配置

如果您在应用程序中使用配置,请使用 @nestjs/config 官方扩展管理配置。这使您的代码更加模块化和易于维护。

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { SomeService } from './some.service';

@Module({
  imports: [ConfigModule.forRoot()], // 加载配置文件
  controllers: [],
  providers: [SomeService],
})
export class SomeModule {}
总结

在使用 NestJS 框架时,如果您遇到了类似的问题,可能是由于代码中的拼写错误、模块导入问题、注入依赖问题或外部模块提供者问题等原因导致的。检查您的代码以避免这些错误,并遵循上述解决方案之一解决它们。