Rumah  >  Artikel  >  hujung hadapan web  >  Cara terbaik untuk mengkonfigurasi pembolehubah persekitaran dan berbilang persekitaran dalam Nest.js

Cara terbaik untuk mengkonfigurasi pembolehubah persekitaran dan berbilang persekitaran dalam Nest.js

WBOY
WBOYasal
2024-08-10 06:40:36354semak imbas

The Best way to configure environment variables and multi environments in Nest.js

Apa yang saya sangat suka tentang Nest.js ialah rangka kerja node.js lengkap yang berkuasa yang memberi anda penyelesaian lengkap yang sesuai untuk membina aplikasi bahagian belakang.

Ia mempunyai sokongan TypeScript terbina dalam dari awal dan menggabungkan elemen OOP (Pengaturcaraan Berorientasikan Objek), FP (Pengaturcaraan Fungsian) dan FRP (Pengaturcaraan Reaktif Berfungsi), seperti yang dikatakan laman web rasmi.

Ia juga mempunyai seni bina dari awal, yang sangat mengagumkan untuk seseorang seperti saya yang suka bekerja dengan projek seni bina berstruktur yang baik.

Dokumentasi sahaja sangat mengagumkan, dan ia merangkumi setiap aspek, termasuk cara menetapkan pembolehubah persekitaran, tetapi bagi saya
Saya tidak begitu faham cara menetapkan berbilang persekitaran.

Mungkin kerana saya baru menggunakan node.js dan nestjs, namun, apabila saya mencari artikel di internet, mereka sentiasa menunjukkan cara yang menggunakan perpustakaan dotenv secara langsung dan bukannya menggunakan nestjs secara asli, yang menggunakan dotenv di bawah tudung.

Dan selepas berjam-jam melihat artikel di sebelah dokumentasi, saya mencari penyelesaian yang berasal dari Nestjs dan fikir saya akan berkongsinya.


Pertama

Anggap kita memerlukan 2 persekitaran untuk projek kita 'dev' dan 'prod'
dan kita memerlukan 2 pembolehubah persekitaran setiap persekitaran: PORT dan URL_DATABASE.

1- Buat 2 fail .env untuk menyimpan  PORT dan URL_DATABASE dan namakan fail ( .env.dev dan .env.prod.)

PORT=3500

DATABASE_URL="file:./dev.db"`

2- Buat pembolehubah env yang dipanggil NODE_ENV, tetapi kali ini daripada menyimpannya dalam fail .env, kami akan menyuntiknya dalam skrip permulaan untuk dev dan prod.

Tetapan NODE_ENV boleh berbeza merentas platform (tetingkap, mac atau Linux), jadi kami akan memasang pakej cross-div untuk membolehkan kami menetapkan pembolehubah persekitaran merentas platform.

pasang menggunakan npm

$ npm install --save-dev cross-env

atau menggunakan pnpm

$ pnpm install --save-dev cross-env

Kemudian, ubah suai skrip package.json anda untuk menggunakan cross-env:

"scripts": {
    "start:dev": "cross-env-shell NODE_ENV=dev nest start --watch",
    "start:prod": "cross-env-shell NODE_ENV=prod node dist/main",
}

Jadi sekarang apabila anda menjalankan aplikasi anda dengan

npm run start:dev 

atau

pnpm run start:dev

Anda mempunyai NODE_ENV=dev dan anda boleh menggunakannya merentas aplikasi.

3- Untuk Nestjs membaca fail .env, kita perlu menggunakan ConfigModule dan mengkonfigurasinya dengan betul, tetapi kita perlu memasangnya terlebih dahulu.

npm

$ npm i --save @nestjs/config

pnpm

$ pnpm i --save @nestjs/config

4- Gunakan ConfigModule :

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      envFilePath: `.env.${process.env.NODE_ENV}`,
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

envFilePath: digunakan untuk menentukan laluan lain untuk fail .env. 
atau baca fail yang berbeza daripada fail .env lalai

.env.${process.env.NODE_ENV} akan diterjemahkan kepada .env.dev dan
Jika kita menjalankan arahan

npm run start:prod

.env.${process.env.NODE_ENV} akan diterjemahkan kepada .env.prod.

5- Bagaimana untuk mengakses pembolehubah persekitaran kita
Untuk mengakses pembolehubah env, kami menggunakan ConfigModule.

Kita boleh menggunakannya dalam main.ts

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  const configService = app.get(ConfigService);
  const port = configService.get('PORT');

  await app.listen(port);
}

atau jika kami memerlukannya di tempat lain, kami menggunakan suntikan.
contohnya

@Injectable()
export class AppService {
  constructor(private configService: ConfigService) {}

  getHello(): string {
    return (
      this.configService.get<string>('DATABASE_URL')
    );
  }
}

Atas ialah kandungan terperinci Cara terbaik untuk mengkonfigurasi pembolehubah persekitaran dan berbilang persekitaran dalam Nest.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn