Nestjs 配置 .env , .env.dev , .env.prod

125 阅读1分钟

使用 @nestjs/config

@nestjs/config 用于处理和管理配置的一个模块

cross-env 跨平台设置和使用环境变量的工具

npm i @nestjs/config cross-env

创建 .env , .env.dev , .env.prod

# .env
PORT = 8000

修改启动命令

"start": "cross-env RUNNING_ENV=dev nest start",
"start:dev": "cross-env RUNNING_ENV=dev nest start --watch",
"start:prod": "cross-env RUNNING_ENV=prod node dist/main",

在 app.module.ts 中进行全局配置

envFilePath值为 ['.env' , '.env.dev' , '.env.prod'] 的时候,读取配置优先级递减,不是覆盖

// 区分环境
import { ConfigModule } from '@nestjs/config';
export const IS_DEV = process.env.RUNNING_ENV === 'dev';
let envFilePath = ['.env'];
if (IS_DEV) {
  envFilePath.unshift('.env.dev');
} else {
  envFilePath.unshift('.env.prod');
}

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true, // 全局配置
      envFilePath, // 优先级递减,不是覆盖
    }),
    LoginModule,
  ],
  controllers: [AppController],
  providers: [AppService],
})

使用端口

// main.ts
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  const PORT = Number(process.env.PORT);
  await app.listen(PORT);  // 8000
}