Vit*_*tor 4 nestjs nestjs-config
我尝试在 ClientsModule 中使用环境变量,如下所示:
import { Module } from '@nestjs/common';
import { ClientsModule, Transport } from '@nestjs/microservices';
@Module({
imports: [
TypeOrmModule.forFeature([Process]),
ClientsModule.register([
{
name: 'PROCESS_SERVICE',
transport: Transport.RMQ,
options: {
queue: process.env.RMQ_PRODUCER_QUEUE_NAME,
urls: [process.env.RMQ_PRODUCER_URL],
queueOptions: { durable: true },
},
},
]),
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个:
import { Module } from '@nestjs/common';
import { ClientsModule, Transport } from '@nestjs/microservices';
import { ConfigService } from '@nestjs/config';
const configService = new ConfigService();
const rmqProcessUrl = configService.get<string>('RMQ_PRODUCER_URL');
const rmqProcessQueue = configService.get<string>('RMQ_PRODUCER_QUEUE');
@Module({
imports: [
TypeOrmModule.forFeature([Process]),
ClientsModule.register([
{
name: 'PROCESSES_SERVICE',
transport: Transport.RMQ,
options: {
queue: rmqProcessQueue,
urls: [rmqProcessUrl],
queueOptions: { durable: true },
},
},
]),
Run Code Online (Sandbox Code Playgroud)
但在这两种情况下都会出现以下错误:
类型错误:元类型不是构造函数
当我直接使用这些值时,它会按预期工作。我也尝试过导入和使用
export const rmqServiceName = process.env.RMQ_PRODUCER_QUEUE_NAME
Run Code Online (Sandbox Code Playgroud)
和
export const rmqServiceName = process.env.RMQ_PRODUCER_URL
Run Code Online (Sandbox Code Playgroud)
但这也会导致同样的错误。
那么我怎样才能访问.env中的变量@ClientsModule呢?我缺少解决方法吗?
Vit*_*tor 12
我发现了问题所在,以防有人遇到和我一样的问题。
应该做的是导入和nestjs/config并使用的方法。ConfigModuleapp.module.tsasyncClientsModule.register
在里面app.module.ts
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
Run Code Online (Sandbox Code Playgroud)
在我正在研究的模块中:
import { Module } from '@nestjs/common';
import { ClientsModule, Transport } from '@nestjs/microservices';
import { ConfigModule, ConfigService } from '@nestjs/config';
@Module({
imports: [
TypeOrmModule.forFeature([Process]),
ClientsModule.registerAsync([
{
name: 'PROCESSES_SERVICE',
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
transport: Transport.RMQ,
options: {
queue: configService.get<string>('RMQ_PRODUCER_QUEUE'),
urls: [configService.get<string>('RMQ_PRODUCER_URL')],
queueOptions: { durable: configService.get<boolean>('RMQ_PRODUCER_QUEUE_DURABLE') },
},
}),
inject: [ConfigService],
},
]),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4140 次 |
| 最近记录: |