我有一个非常简单的CryptoModule,如下所示:
import { Module } from '@nestjs/common';
import { CryptoService } from './crypto.service';
@Module({
providers: [CryptoService],
exports: [CryptoService],
})
export class CryptoModule {}现在,服务CryptoService使用一个环境变量来设置密钥,为此,我使用Nest包。
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。
发布于 2022-04-26 11:20:25
我认为问题在于您在构造函数中添加了private cryptr: Cryptr。Nest试图解决这个问题,但是没有模块Cryptr。
尝试从构造函数中删除它,然后添加一个变量cryptr。
cryptr: Cryptr
constructor(private readonly config: ConfigService){ /* ... */https://stackoverflow.com/questions/72012787
复制相似问题