Nestjs无法解决依赖关系

问题描述 投票:1回答:1

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

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

UrlsAfipService

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)
  }
}

AfipUrls

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

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

ApiModule

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 {}

的AppModule

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 {}
javascript node.js typescript dependency-injection nestjs
1个回答
1
投票

您已将AfipUrls声明为UrlsAfipService的依赖项,但未在任何模块中提供。

因此,您必须将AfipUrls添加到providersApiModule数组中。然后可以注射。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.