"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Nest.js में पर्यावरण चर और बहु ​​वातावरण को कॉन्फ़िगर करने का सबसे अच्छा तरीका

Nest.js में पर्यावरण चर और बहु ​​वातावरण को कॉन्फ़िगर करने का सबसे अच्छा तरीका

2024-08-16 को प्रकाशित
ब्राउज़ करें:266

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

क्या मुझे Nest.js के बारे में वास्तव में पसंद है कि यह एक शक्तिशाली पूर्ण नोड.जेएस ढांचा है जो आपको निर्माण के लिए पूर्ण समाधान प्रदान करता है बैकएंड अनुप्रयोग.

इसमें शुरुआत से ही टाइपस्क्रिप्ट सपोर्ट है और यह OOP (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग), FP (फंक्शनल प्रोग्रामिंग), और [के तत्वों को जोड़ता है। &&&]एफआरपी (कार्यात्मक प्रतिक्रियाशील प्रोग्रामिंग), जैसा कि आधिकारिक वेबसाइट कहती है।

इसमें प्रारंभ से ही वास्तुकला भी है, जो मेरे जैसे किसी व्यक्ति के लिए अद्भुत है जो अच्छी संरचित वास्तुकला परियोजनाओं के साथ काम करना पसंद करता है।

अकेले दस्तावेज़ीकरण बहुत प्रभावशाली है, और इसमें हर पहलू को शामिल किया गया है, जिसमें

पर्यावरण चर कैसे सेट करें, लेकिन मेरे लिए मुझे समझ नहीं आया कि एकाधिक परिवेश कैसे सेट करें।

हो सकता है क्योंकि मैं नोड.जेएस और नेस्टजेएस में नया हूं, हालांकि, जब मैंने लेखों के लिए इंटरनेट पर देखा, तो वे हमेशा एक ऐसा तरीका दिखा रहे थे जो मूल रूप से नेस्टज का उपयोग करने के बजाय सीधे डोटेनव लाइब्रेरी का उपयोग करता है, जो इसके तहत डोटेनव का उपयोग करता है। कनटोप।

और कई घंटों तक दस्तावेज़ों के अलावा लेखों को देखने के बाद, मैंने एक समाधान तैयार किया जो नेस्टज का मूल निवासी है और सोचा कि मैं इसे साझा करूंगा।


पहला

आइए मान लें कि हमें अपने प्रोजेक्ट के लिए 2 वातावरणों की आवश्यकता है

'dev' और 'prod' और हमें प्रति परिवेश 2 पर्यावरण चर की आवश्यकता है:
पोर्ट और DATABASE_URL

1- स्टोर करने के लिए 2 .env फ़ाइलें बनाएं  

PORT और DATABASE_URL और फ़ाइलों को नाम दें ( .env.dev और .env.prod.)

पोर्ट=3500 DATABASE_URL='फ़ाइल:./dev.db'`
PORT=3500

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

NODE_ENV नामक एक env वेरिएबल बनाएं, लेकिन इस बार इसे .env फ़ाइल में संग्रहीत करने के बजाय, हम इसे dev और prod के लिए स्टार्ट स्क्रिप्ट में इंजेक्ट करेंगे।

सेटिंग

NODE_ENV सभी प्लेटफ़ॉर्म (विंडोज़, मैक, या लिनक्स) में भिन्न हो सकती है, इसलिए हम सभी प्लेटफ़ॉर्म पर पर्यावरण चर सेट करने की अनुमति देने के लिए एक क्रॉस-डिव पैकेज स्थापित करेंगे।

एनपीएम का उपयोग करके इंस्टॉल करें


$ एनपीएम इंस्टाल--सेव-डेव क्रॉस-एनवी
PORT=3500

DATABASE_URL="file:./dev.db"`
या पीएनपीएम का उपयोग कर रहे हैं


$ पीएनपीएम इंस्टाल--सेव-डेव क्रॉस-एनवी
PORT=3500

DATABASE_URL="file:./dev.db"`
फिर, क्रॉस-एनवी का उपयोग करने के लिए अपनी package.json स्क्रिप्ट को संशोधित करें:


"स्क्रिप्ट": {     "प्रारंभ:देव": "क्रॉस-एनवी-शेल NODE_ENV=देव नेस्ट प्रारंभ--देखें",     "प्रारंभ:प्रोड": "क्रॉस-एनवी-शेल NODE_ENV=प्रोड नोड डिस्ट/मेन", }
PORT=3500

DATABASE_URL="file:./dev.db"`
तो अब जब आप अपना एप्लिकेशन चलाते हैं


एनपीएम रन स्टार्ट:डेव 
PORT=3500

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


पीएनपीएम रन स्टार्ट:डेव
PORT=3500

DATABASE_URL="file:./dev.db"`
आपके पास

NODE_ENV=dev है, और आप इसे पूरे एप्लिकेशन में उपयोग कर सकते हैं।

3- Nestjs के लिए .env फ़ाइलें पढ़ने के लिए, हमें

ConfigModule का उपयोग करना होगा और इसे सही ढंग से कॉन्फ़िगर करना होगा, लेकिन पहले हमें इसे इंस्टॉल करना होगा।

एनपीएम


$ npm i --save @nestjs/config
PORT=3500

DATABASE_URL="file:./dev.db"`
पीएनपीएम


$ pnpm i --save @nestjs/config
PORT=3500

DATABASE_URL="file:./dev.db"`
4- उपयोग करें

ConfigModule :

@मॉड्यूल({   आयात: [     configModule.forRoot({       वैश्विक है: सत्य,       envFilePath: `.env.${process.env.NODE_ENV}`,     }),   ],   नियंत्रक: [ऐपकंट्रोलर],   प्रदाता: [ऐपसेवा], }) निर्यात वर्ग AppModule {}
PORT=3500

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

envFilePath: का उपयोग .env फ़ाइल के लिए अन्य पथ निर्दिष्ट करने के लिए किया जाता है।  या डिफ़ॉल्ट .env फ़ाइल से भिन्न फ़ाइल पढ़ें

.env.${process.env.NODE_ENV} का अनुवाद .env.dev और में किया जाएगा यदि हम कमांड चलाते हैं

एनपीएम रन स्टार्ट:प्रोड
PORT=3500

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

.env.${process.env.NODE_ENV} का अनुवाद .env.prod में होगा।

5-

हमारे पर्यावरण चर तक कैसे पहुंचें Env वेरिएबल्स तक पहुंचने के लिए, हम
ConfigModule का उपयोग करते हैं।

हम इसका उपयोग

main.ts में कर सकते हैं

async फ़ंक्शन बूटस्ट्रैप() {   स्थिरांक ऐप = प्रतीक्षा करें NestFactory.create(AppModule);   const configService = app.get(ConfigService);   कॉन्स्ट पोर्ट = configService.get('पोर्ट');   ऐप का इंतजार करें। सुनें (पोर्ट); }
PORT=3500

DATABASE_URL="file:./dev.db"`
या यदि हमें किसी अन्य स्थान पर इसकी आवश्यकता है, तो हम इंजेक्शन का उपयोग करते हैं।

उदाहरण के लिए

@इंजेक्टेबल() निर्यात वर्ग AppService {   कंस्ट्रक्टर(निजी कॉन्फिगसर्विस: कॉन्फिगसर्विस) {}   getHello(): स्ट्रिंग {     वापस करना (       this.configService.get('DATABASE_URL')     );   } }
@Injectable()
export class AppService {
  constructor(private configService: ConfigService) {}

  getHello(): string {
    return (
      this.configService.get('DATABASE_URL')
    );
  }
}
विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/ahmed_hyperov/the-best-way-to-configure-environment-variables-and-multi-environments-in-nestjs-31fi?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 .comडिलीट से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3