我有一個非常簡單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,
}),
問題是我不斷收到以下錯誤:
“錯誤: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
uj5u.com熱心網友回復:
我認為問題在于您private cryptr: Cryptr在建構式中添加了。Nest 正在嘗試解決此問題,但沒有模塊Cryptr。
嘗試從建構式中洗掉它并添加一個變數cryptr。
cryptr: Cryptr
constructor(private readonly config: ConfigService){ /* ... */
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/464707.html
下一篇:在Angular中使用API時使用{returnthis.getAll.get(this.url)}遇到一些問題
