NestJS 条件模块导入

Thi*_*ira 7 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}`,
    ),
  ],
Run Code Online (Sandbox Code Playgroud)

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

Jes*_*ter 13

您可以根据需要的任何条件轻松地通过 aspread和三元检查来完成此操作。如果检查结果为 false 并且不会包含该模块,则只需返回一个空数组。

@Module({
  imports: [
   ...(isEnvPresent ? [ConfigModule.forRoot({ load: [configuration] })] : []),
   UsersModule,
  ],
})
Run Code Online (Sandbox Code Playgroud)

  • 我使用了你的传播想法,并在“start:dev”脚本上设置了“NODE_ENV=dev”,所以我使用 ...(process.env.NODE_ENV == 'dev' ? [ConfigModule.forRoot({ load: [配置] })] : []),非常感谢 (2认同)