0

ルート ディレクトリに .env 、.env.test、.env.prod の 3 つの env ファイルを作成しました。

.env ファイルには

PORT=4000

DATABASE_URL="postgresql://postgres:1234@localhost:5432/postgres?schema=public"

JWT_SECRET="THIS_IS_A_SECRET_KEY_DEV_ENVIRONMENT"

JWT_EXPIRATION_TIME=3600

そして、私の .env.test には

    PORT=4001
    
    DATABASE_URL="postgresql://postgres:1234@localhost:5432/postgres?schema=public"
    
    JWT_SECRET="THIS_IS_A_SECRET_KEY_TEST_ENVIRONMENT"
    
    JWT_EXPIRATION_TIME=2400

私の app.moudle.ts は次のようになります

const ENV = process.env.NODE_ENV;
console.log(ENV);
@Module({
  imports: [
    ConfigModule.forRoot({
      envFilePath: !ENV ? '.env' : `.env.${ENV}`,
      load: [configuration],
      ignoreEnvFile: true,
    }),
  providers: [AppService],
  controllers: [AppController],
})
export class AppModule {
  constructor(private connection: Connection) {}
}

configuration.ts :

export default () => ({
    port: parseInt(process.env.PORT, 10) || 3000,
    jwt:{
        secret:process.env.JWT_SECRET,
        expiresIn:process.env.JWT_EXPIRATION_TIME
    }
  });

そして私のスクリプトは次のとおりです。

 "start:dev": "nest build && nest start --watch",
    "start:test": "NODE_ENV=test nest start --watch",

コントローラーコード:

Logger.log(this.configService.get<string>('jwt.secret'));

任意のコントローラーに conifgService を挿入し、jwt キーをログに記録しようとすると、常に.envファイルからキーがフェッチされます。スクリプト「start:test」を使用してアプリを実行した場合でも

スクリプト/環境に関係なく、常に.envファイルから値を取得しますすべてのスクリプトについてこれをログに記録します「THIS_IS_A_SECRET_KEY_DEV_ENVIRONMENT」

4

0 に答える 0