node.js - NestJS 条件模块导入

标签 node.js typescript nestjs

有没有办法有条件地导入模块? 我想检查 .env 文件是否存在,所以我使用 ConfigModule 配置 env 变量。

    imports: [
    UsersModule,
    ConfigModule.forRoot({ load: [configuration] }), //I want to use this just if the .env file exists
    MongooseModule.forRoot(
      `mongodb+srv://${process.env.DATABASE_USER}:${process.env.DATABASE_PASSWORD}@${process.env.DATABASE_URL}`,
    ),
  ],

为什么:我部署了一个 api 并使用 heroku 配置了环境变量,并且在生产中它可以工作,但是我没有这些变量来运行开发中的代码,并且我无法在我的公共(public)存储库中公开 .env 因为这包含我的数据库凭据。正因为如此,我想创建一个 .env 文件并将其放在 .gitignore 上以不使用此文件发布

最佳答案

您可以通过 spread 和根据您想要的任何条件的三元检查轻松完成此操作。如果检查结果为假,则返回一个空数组,模块将不被包含。

@Module({
  imports: [
   ...(isEnvPresent ? [ConfigModule.forRoot({ load: [configuration] })] : []),
   UsersModule,
  ],
})

关于node.js - NestJS 条件模块导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69120748/

相关文章:

javascript - 在 Javascript/Typescript 中从 1D 数组创建 3D 数组

javascript - 在nestjs的过滤器中注入(inject)服务

node.js - 类型错误 : Key must be a buffer at new Hmac (crypto. js:91:16)

node.js - 通过 WebStorm 运行/调试配置在 docker node.js 应用程序上设置私有(private) npm 注册表

node.js - 合并命名空间和变量的声明

javascript - 在单行中声明多个变量 + Angular 2 和 TypeScript

javascript - 我们可以在 Typescript 声明文件中使用全局符号吗?

javascript - 获取队列属性不起作用

javascript - NestJS 在服务中注入(inject)请求或执行上下文

graphql - NestJS | GraphQL - 如何解析多个数据集中的嵌套对象列表