无法弄清楚我的代码有什么问题。 (我是nestjs的新手,我正在尝试通过将一些应用程序传递给它来学习它)。控制台日志显示:
嵌套无法解析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 {}
答案 0 :(得分:1)
您已将AfipUrls
声明为UrlsAfipService
的依赖项,但未在任何模块中提供。
因此,您必须将AfipUrls
添加到providers
的{{1}}数组中。然后可以将其注入。
ApiModule
但是请注意,代码库中特定于编码环境的值可能是代码的味道。考虑创建一个providers: [UrlsAfipService, WsaaService, DescribeService, AfipUrls]
// ^^^^^^^^
来封装特定于环境的变量,这些变量是使用ConfigService
从环境变量或.env
文件中读取的。有关更多信息,请参见此answer。