gpt4 book ai didi

javascript - Nestjs 无法解决依赖关系

转载 作者:行者123 更新时间:2023-11-30 19:37:12 24 4
gpt4 key购买 nike

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

Nest can't resolve dependencies of the UrlsAfipService (?). Please make sure that the argument at index [0] is available in the ApiModule context.

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

应用模块

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 的依赖项,但它未在任何模块中提供。

因此,您必须将 AfipUrls 添加到 ApiModuleproviders 数组中。然后就可以注入(inject)了。

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

但请注意,代码库中的编码环境特定值可能是一种代码味道。考虑创建一个 ConfigService 来封装环境特定变量,这些变量是使用 dotenv 从环境变量或 .env 文件中读取的。看这个answer获取更多信息。

关于javascript - Nestjs 无法解决依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55812793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com