Nest - Nest 无法解析依赖项

Nest - Nest can't resolve dependencies

我有一个非常简单的 CryptoModule,看起来像这样:

import { Module } from '@nestjs/common';

import { CryptoService } from './crypto.service';

@Module({
  providers: [CryptoService],
  exports: [CryptoService],
})
export class CryptoModule {}

现在服务 CryptoService 使用环境变量来设置密钥,为此我使用 Nest Config 包。

import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import Cryptr from 'cryptr';

@Injectable()
export class CryptoService {
  constructor(private readonly config: ConfigService, private cryptr: Cryptr) {
    this.cryptr = new Cryptr(this.config.get('CRYPTO_SECRET'));
  }

  encrypt = this.cryptr.encrypt;
  decrypt = this.cryptr.decrypt;
}

ConfigModule 在 app.module 中导入,如下所示:

  imports: [
    ConfigModule.forRoot({
      envFilePath: !ENV ? '.env' : `.env.${ENV}`,
      isGlobal: true,
    }),

问题是我不断收到以下错误:

"Error: Nest can't resolve dependencies of the CryptoService (ConfigService, ?). Please make sure that the argument dependency at index [1] is available in the CryptoModule context.\n"

但由于 ConfigModule 是全局的,我认为它不必添加到加密模块的导入中吗?顺便说一句,我也尝试这样做,但仍然出现相同的错误消息...我是否遗漏了什么?

目前我唯一使用这个模块的地方是这里:

import { Module } from '@nestjs/common';

import { UserService } from './user.service';
import { UserController } from './user.controller';
import { CryptoModule } from '../crypto/crypto.module';

@Module({
  imports: [CryptoModule],
  controllers: [UserController],
  providers: [UserService],
})
export class UserModule {}

当然在服务中比我导入 CryptoService

我认为问题在于您在构造函数中添加了 private cryptr: Cryptr。 Nest 正在尝试解决此问题,但没有模块 Cryptr.

尝试从构造函数中删除它并添加一个变量 cryptr

cryptr: Cryptr

constructor(private readonly config: ConfigService){ /* ... */