在 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
? (我知道当我有配置模块时,这不是最好的解决方案,但我想知道这是原因)
谢谢
从技术上讲,您可以访问到
process.env
,但只能访问那些已经存在于环境中的变量,例如NODE_PATH
。如果您询问 *.env
文件中的变量,以及为什么此时无法访问它们,答案是:因为它们还没有被任何东西加载到 process.env
中。当您使用 NestJS ConfigModule
时,它会解析 .env
文件,并将其内容加载到环境中,从而 process.env
。
如果您查看了
dotenv
包(或 python-dotenv
,在 Python 中它的工作方式完全相同),您需要首先从文件中 加载配置,只有这样,应用程序才能访问它们环境。