簡體   English   中英

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 package。

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

app.module像這樣導入到 app.module 中:

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

問題是我不斷收到以下錯誤:

“錯誤:Nest 無法解析 CryptoService (ConfigService, ?) 的依賴項。請確保索引 [1] 處的參數依賴項在 CryptoModule 上下文中可用。\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){ /* ... */

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM