Настройка конфигурации: аргумент «путь» должен иметь тип [...] полученный тип неопределен - PullRequest
0 голосов
/ 04 октября 2019

Я следовал по Руководству по настройке :

Модуль

@Module({
  providers: [
    {
      provide: ConfigService,
      useValue: new ConfigService(`development.env`),
    },
  ],
  exports: [ConfigService],
})
export class ConfigModule {}

Служба:

export interface EnvConfig {
  [key: string]: string;
}
export class ConfigService {
  private readonly envConfig: EnvConfig;

  constructor(filePath: string) {
    console.log(filePath);
    const config = dotenv.parse(fs.readFileSync(filePath));
    this.envConfig = ConfigService.validateInput(config);
  }
[...]

всякий раз, когда я запускаю приложение:

> nest start


development.env
[Nest] 10496   - 10/04/2019, 2:16:49 PM   [NestFactory] Starting Nest application...
undefined
[Nest] 10496   - 10/04/2019, 2:16:49 PM   [ExceptionHandler] The "path" argument must be one of ty
pe string, Buffer, or URL. Received type undefined +14ms
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be one of type string, Buffer, or URL.
Received type undefined

Кажется, что служба создается 2 раза. Я не знаю почему. Есть идеи, что здесь происходит?

1 Ответ

1 голос
/ 04 октября 2019

Учитывая наше обсуждение разногласий, вы providing ConfigService в своем AppModule, в то время как также importing ConfigModule, что заставляет Nest думать, что ему необходимо восстановить ConfigService, но без переменной filePath для конструктора.

Удаление ConfigService из массива providers AppModule решит проблему.

...