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){ /* ... */
我有一个非常简单的 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){ /* ... */