将配置或全局变量获取到NestJS中的模块定义中

问题描述 投票:0回答:1

在 NestJS 中,我有这样的东西:

@Module({
    imports: [
        AnotherModule.register({
            callBackUrl: 'http://localhost:3333/callback',
            merchantId: '124312352134123',
            currency: 'CAD',
        }),
    ],
    providers: [PaymentsService, ...PaymentsProviders],
    exports: [PaymentsService],
})
export class PaymentsModule {}

每当我需要从全局变量或配置模块获取

merchantId
时,NestJS 有一个叫做
useFactory
的东西。但它适用于
registerAsync
方法,而不是
register
。 在这种情况下,AnotherModule 没有
registerAsync
方法。我能做什么?

问题:为什么我不能在这里使用

process.env
? (我知道当我有配置模块时,这不是最好的解决方案,但我想知道这是原因)

谢谢

typescript dependency-injection nestjs global-variables
1个回答
0
投票

从技术上讲,您可以访问

process.env
,但只能访问那些已经存在于环境中的变量,例如
NODE_PATH
。如果您询问
*.env
文件中的变量,以及为什么此时无法访问它们,答案是:因为它们还没有被任何东西加载到
process.env
中。当您使用 NestJS
ConfigModule
时,它会解析
.env
文件,并将其内容加载到环境中,从而
process.env

如果您查看了

dotenv
包(或
python-dotenv
,在 Python 中它的工作方式完全相同),您需要首先从文件中 加载配置,只有这样,应用程序才能访问它们环境。

© www.soinside.com 2019 - 2024. All rights reserved.