【问题标题】:Nestjs cant resolve dependenciesNestjs无法解决依赖关系
【发布时间】:2019-09-12 17:34:12
【问题描述】:

无法弄清楚我的代码有什么问题。 (我是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】:

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

    所以你必须将AfipUrls 添加到ApiModuleproviders 数组中。然后就可以注入了。

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-14
      • 2020-05-31
      • 1970-01-01
      • 2018-09-01
      • 2016-02-16
      • 2017-02-20
      相关资源
      最近更新 更多