繁体   English   中英

Nestjs无法解决依赖关系

[英]Nestjs cant resolve dependencies

无法弄清楚我的代码有什么问题。 (我是 nestjs 的新手,我试图通过向它传递一些应用程序来学习它)。 控制台日志说:

Nest 无法解析 UrlsAfipService (?) 的依赖关系。 请确保索引 [0] 处的参数在 ApiModule 上下文中可用。

网址服务

import { Injectable } from '@nestjs/common';
import { AfipUrls } from './urls'

@Injectable()
export class UrlsAfipService {

  constructor(
    private readonly afipUrls: AfipUrls,
  ) {}

  getWSAA () {
    return this.afipUrls.homo().wsaa; // <- change to prod() for production
  }

  getService (service: string) {
    return this.afipUrls.homo().service.replace('{service}', service)
  }
}

网址

export class AfipUrls {
    homo() {
      return {
        wsaa: 'https://url.com',
        service: 'https://url.com'
      }
    }

    prod() {
      return {
        wsaa: 'url.com',
        service: 'url.com'
      }
    }
}

接口模块

import { Module } from '@nestjs/common';
import { ApiController } from './api.controller';
import { UrlsAfipService } from './urls-afip.service'
import { WsaaService } from './wsaa.service'
import { DescribeService } from './describe.service';

@Module({
  controllers: [ApiController],
  providers: [UrlsAfipService, WsaaService, DescribeService]
})

export class ApiModule {}

应用模块

import { Module } from '@nestjs/common';

import { ApiModule } from './api/api.module';

import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [ApiModule],
  controllers: [AppController],
  providers: [AppService],
})

export class AppModule {}

您已声明AfipUrls作为一个依赖UrlsAfipService但它没有任何模块中提供。

所以,你必须添加AfipUrlsproviders的阵列ApiModule 然后就可以注射了。

providers: [UrlsAfipService, WsaaService, DescribeService, AfipUrls]
//                                                         ^^^^^^^^

但请注意,代码库中的编码环境特定值可能是代码异味。 考虑创建一个ConfigService来封装使用dotenv从环境变量或.env文件中读取的环境特定变量。 有关更多信息,请参阅此答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM