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

Node.js v .env फ़ाइलें, आयात मॉड्यूल और अनुमति मॉडल

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

Node.js v .env files, import modules, and Permission Model

Node.js v20.6 को अद्भुत नई सुविधाओं के साथ जारी किया गया था जो 24 अक्टूबर, 2023 से LTS संस्करणों का हिस्सा हैं। आइए देखें!

INI कॉन्फ़िगरेशन फ़ाइलें

dotenv पैकेज को अलविदा कहें, अब Node.js एक .env फ़ाइल से पर्यावरण चर लोड कर सकता है।

node --env-file path/to/.env index.js

? INI फ़ाइल का पथ आवश्यक है क्योंकि Node.js ने INI फ़ाइल के लिए कोई डिफ़ॉल्ट नाम नहीं चुना है।

? यदि INI फ़ाइल मौजूद नहीं है तो नोड प्रक्रिया विफल नहीं हुई, बस पर्यावरण चर के बिना चलना शुरू करें।

NODE_OPTIONS लोड हो रहा है

आप निम्न उदाहरण की तरह INI कॉन्फ़िगरेशन फ़ाइल का उपयोग करके Node.js के विशिष्ट पर्यावरण चर (जैसे NODE_OPTIONS) लोड कर सकते हैं:

NODE_NO_WARNINGS=1
NODE_OPTIONS="--experimental-permission --allow-fs-read=*"
TZ=Pacific/Honolulu
UV_THREADPOOL_SIZE=5

आप इसे उसी विधि से उपयोग कर सकते हैं:

node --env-file .env index.js

ईएस मॉड्यूल प्रीलोड करें

--आयात ध्वज का उपयोग करके स्टार्टअप पर ईएस मॉड्यूल प्रीलोड करें, मॉड्यूल किसी भी एप्लिकेशन कोड चलने से पहले लोड किया जाएगा, यहां तक ​​कि प्रवेश बिंदु भी।

node --import path/to/file.js index.js

यह ध्वज कॉमनजेएस मॉड्यूल को लोड करने के लिए उपयोग किए जाने वाले प्रसिद्ध --require ध्वज के समान है।

? --require के साथ पहले से लोड किए गए मॉड्यूल --import के साथ पहले से लोड किए गए मॉड्यूल से पहले चलेंगे।

अनुमति मॉडल

हमारे पास Node.js प्रक्रिया के निष्पादन के दौरान विशिष्ट संसाधनों तक पहुंच को प्रतिबंधित करने के लिए एक नया तंत्र है जिसे परमिशन मॉडल कहा जाता है। एपीआई एक ध्वज --प्रायोगिक-अनुमति के पीछे मौजूद है, जो सक्षम होने पर, स्पष्ट रूप से अनुमति नहीं दिए गए सभी संसाधनों तक पहुंच को प्रतिबंधित कर देगा।

फ़ाइल सिस्टम अनुमतियाँ

--allow-fs-read ध्वज * का उपयोग करके सभी FileSystemRead संचालन की अनुमति देता है, या निरपेक्ष मार्गों का उपयोग करके विशिष्ट पथों की अनुमति देता है।

node --experimental-permission --allow-fs-read=* index.js

केवल विशिष्ट पथों तक पहुंच की अनुमति देने के लिए आपको पूर्ण मार्गों का उपयोग करना चाहिए

node --experimental-permission --allow-fs-read=/path/to/index.js --allow-fs-read=/path/to/directory index.js

? इनिशियलाइज़र मॉड्यूल को भी अनुमति देने की आवश्यकता है। अन्यथा Index.js फ़ाइल को Node.js प्रक्रिया द्वारा ही लोड नहीं किया जा सकता है।

? आप उपयोग कर सकते हैं. कार्यशील निर्देशिका तक पहुंच की अनुमति देने के लिए, लेकिन आप इसका उपयोग किसी फ़ाइल का पथ निर्दिष्ट करने के लिए नहीं कर सकते (जैसे ./index.js)।

node --experimental-permission --allow-fs-read=. index.js

--allow-fs-write ध्वज * का उपयोग करके विशिष्ट पथों या संपूर्ण फ़ाइल सिस्टम तक पहुंच की अनुमति देता है।

node --experimental-permission --allow-fs-read=. --allow-fs-write=/tmp/ index.js

बाल प्रक्रिया

जब अनुमति मॉडल सक्षम होता है, तो प्रक्रिया डिफ़ॉल्ट रूप से किसी भी चाइल्ड प्रक्रिया को उत्पन्न करने में सक्षम नहीं होगी, आपको इस ऑपरेशन की अनुमति देने के लिए --allow-child-process का उपयोग करना चाहिए। आइए Index.js के लिए निम्नलिखित कोड का उपयोग करें।

const childProcess = require('node:child_process');
childProcess.spawn('node', ['-e', 'require("fs").writeFileSync("./new-file.txt", "Hello, World!")']);

इस स्निपेट को अनुमति मॉडल सक्षम के साथ चलाने के लिए आपको निम्नलिखित कमांड का उपयोग करके Index.js निष्पादित करना चाहिए:

node --experimental-permission --allow-fs-read . --allow-child-process index.js

? चाइल्ड प्रक्रिया डिफ़ॉल्ट रूप से अनुमति मॉडल को इनहेरिट नहीं करती है, इसीलिए new-file.txt सफलतापूर्वक बनाई जाती है।

अधिक विकल्प

यदि आप इस अनुमति मॉडल के तहत वर्कर थ्रेड्स बनाना चाहते हैं तो आप --allow-worker ध्वज की जांच कर सकते हैं और WASI उदाहरणों के निर्माण की अनुमति देने के लिए --allow-wasi की जांच कर सकते हैं

निष्कर्ष

हमारे एप्लिकेशन के लिए पर्यावरण चर लोड करने के लिए हमारे पास कई नए उपकरण हैं, हमारे कोड में आवश्यक प्रीलोड ईएस मॉड्यूल आयात करने की एक विधि और हमारे सिस्टम की सुरक्षा बढ़ाने के लिए एक नया अनुमति मॉडल है।

Node.js ब्लॉग पर बने रहें, यह टीम हर संस्करण में अद्भुत सुविधाएँ जोड़ रही है! हमारे पास v22.6.0 में DevTools का उपयोग करके प्रारंभिक टाइपस्क्रिप्ट समर्थन और एक नेटवर्क निरीक्षण है।

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/cloudx/nodejs-v20-env-files-import-modules-and-permission-model-2fd9?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163.com पर संपर्क करें। इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3