如何在nestjs中管理不同的配置环境

Alb*_*ert 16 nestjs

我想要一些环境,比如说development, production, test。这些环境应该是独立的,并使用自己的一组配置参数,例如 DB、SERVER_PORT、USER 等。它们不应该位于代码库中,所以我认为它们应该是不同的 .env 文件。也就是说,我应该能够根据活动的环境加载不同的 .env 文件。另外,还不清楚我必须在哪里设置环境切换器。

也许它应该是一个具有 NODE_ENV 参数的单个 .env 文件,该参数可以设置为上述任何值,无论是开发、生产还是测试。根据此参数的值,会自动加载一组必要的配置参数。

我已经阅读了文档,目前对我来说似乎有点令人困惑。

似乎应该有一些配置工厂。

Kes*_*sir 27

假设您在项目的根目录中有以下配置文件:env.development, env.staging,env.test

这是我将如何实现它:

app.module.ts文件中:

import { ConfigModule } from '@nestjs/config';

const ENV = process.env.NODE_ENV;

@Module({
  imports: [
    ConfigModule.forRoot({
      envFilePath: !ENV ? '.env' : `.env.${ENV}`,
    }),
  ],
  controllers: [AppController],
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

受此解决方案的启发:https : //github.com/nestjsx/nestjs-config#using-different-env-files

  • @KrishnanSriram "start:dev": "NODE_ENV=development Nest start --watch" 是一种方法。 (3认同)
  • 与其他方法相比,我更喜欢这种方法。但是你在哪里设置process.env.NODE_ENV。在 Package.json 中? (2认同)
  • @ChristianGroleau 使用 cross-env 将确保为所有操作系统(windows、linux)设置 env 变量。 (2认同)