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

WBOY
Lepaskan: 2024-08-10 06:40:36
asal
382 orang telah melayarinya

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"`
Salin selepas log masuk

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
Salin selepas log masuk

atau menggunakan pnpm

$ pnpm install --save-dev cross-env
Salin selepas log masuk

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",
}
Salin selepas log masuk

Jadi sekarang apabila anda menjalankan aplikasi anda dengan

npm run start:dev 
Salin selepas log masuk

atau

pnpm run start:dev
Salin selepas log masuk

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

Salin selepas log masuk

pnpm

$ pnpm i --save @nestjs/config

Salin selepas log masuk

4- Gunakan ConfigModule :

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

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
Salin selepas log masuk

.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);
}
Salin selepas log masuk

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')
    );
  }
}
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan