@ रॉबर्ट रॉबर्ट्स के उत्तर पर विस्तार करने के लिए।
मेरा उपयोगकर्ता नाम "डोमेन \ उपयोगकर्ता नाम" का है - प्रॉक्सी कॉन्फ़िगरेशन में स्लैश सहित एक फॉरवर्ड स्लैश दिखाई देता है। इसलिए यह दर्ज करना:
npm config set proxy "http://domain\username:password@servername:port/"
मुझे अपने domain\user
स्ट्रिंग को एनकोड करना था , हालाँकि, मेरे पास अपने यूज़रनेम के अंदर एक जगह है इसलिए मैंने +
स्पेस URL एन्कोडिंग को एनकोड करने के लिए रखा , लेकिन यह डबल एन्कोडेड के रूप में मिलेगा %2B
(जो कि प्लस साइन के लिए URL एनकोडिंग है, हालांकि URL एक अंतरिक्ष के लिए एन्कोडिंग है%20
) है, इसलिए मुझे इसके बजाय निम्नलिखित करना था:
npm कमांड
// option one
// it works for some packages
npm config set http_proxy "http://DOMAIN%5Cuser+name:password@x.x.x.x:port"
npm config set proxy "http://DOMAIN%5Cuser+name:password@x.x.x.x:port"
// option two
// it works best for me
// please notice that I actually used a space
// instead of URL encode it with '+', '%20 ' OR %2B (plus url encoded)
npm config set http_proxy "http://DOMAIN%5Cuser name:password@x.x.x.x:port"
npm config set proxy "http://DOMAIN%5Cuser name:password@x.x.x.x:port"
// option two (B) as of 2019-06-01
// no DOMAIN
// instead of URL encode it with '+', '%20 ' OR %2B (plus url encoded)
npm config set http_proxy "http://user name:password@x.x.x.x:port"
npm config set proxy "http://user name:password@x.x.x.x:port"
समस्या निवारण npm विन्यास
मैंने इस्तेमाल किया npm config list
उन पार्स किए गए मानों को प्राप्त करने के लिए था जो मैंने ऊपर सेट किए थे, और इसी तरह मुझे डबल एन्कोडिंग के बारे में पता चला। अजीब।
अनिवार्य रूप से आपको निम्नलिखित आवश्यकताओं का पता लगाना चाहिए:
- एक है
DOMAIN
प्रमाणीकरण के लिए स्ट्रिंग आवश्यक है
- क्या आपको विशेष वर्णों को एनकोड करने की आवश्यकता है?
- रिक्त स्थान और (@) संकेत विशेष रूप से चुनौतीपूर्ण हैं
सादर।
विन्डोज़ पर्यावरण वारिस (CMD शीघ्र)
अपडेट करें
यह भी बताता है कि उपरोक्त विन्यास के साथ, मेरे पास अभी भी कुछ पैकेज / स्क्रिप्ट के साथ कुछ समस्याएं थीं जो अनुरोध का उपयोग करती हैं - सामान को डाउनलोड करने के लिए सरलीकृत HTTP क्लाइंट आंतरिक रूप से। इसलिए, जैसा कि ऊपर रीडमी ने समझाया है, हम पर्यावरण चर को निर्दिष्ट कर सकते हैं कमांड लाइन पर प्रॉक्सी सेट करने के , और अनुरोध उन मानों को सम्मानित करेगा।
फिर, (और मैं इसे स्वीकार करने के लिए अनिच्छुक हूँ) कई प्रयास (अधिक दिनों की तरह), पर्यावरण चर सेट करने की कोशिश करने के बाद मैं निम्नलिखित दिशानिर्देशों के साथ सफल रहा:
rem notice that the value after the = has no quotations
rem - I believe that if quotations are placed after it, they become
rem part of the value, you do not want that
rem notice that there is no space before or after the = sign
rem - if you leave a space before it, you will be declaring a variable
rem name that includes such space, you do not want to do that
rem - if you leave a space after it, you will be including the space
rem as part of the value, you do not want that either
rem looks like there is no need to URL encode stuff in there
SET HTTP_PROXY=http://DOMAIN\user name:password@x.x.x.x:port
SET HTTPS_PROXY=http://DOMAIN\user name:password@x.x.x.x:port
cntlm
मैंने कुछ हफ़्तों के लिए उपरोक्त तकनीक का उपयोग किया, जब तक कि मुझे प्रॉक्सी सेटअप की आवश्यकता वाले सभी साधनों में अपना पासवर्ड अपडेट करने का ओवरहेड एहसास नहीं हुआ।
Npm के अलावा, मैं भी उपयोग करता हूं:
- कुंज
- आवारा
- वर्चुअल बॉक्स (रनिंग लाइन)
- apt-get [linux]
- Git
- vscode
- कोष्ठक
- परमाणु
- tsd
cntlm सेटअप चरण
इसलिए, मैंने cntlm स्थापित किया । सेटिंग cntlm
बहुत आगे है, आप ini फ़ाइल @ के लिए देखोC:\Program Files\Cntlm\cntlm.ini
- खुला
C:\Program Files\Cntlm\cntlm.ini
(आपको व्यवस्थापक अधिकारों की आवश्यकता हो सकती है)
- देखो
Username
और Domain
लाइनों (लाइन 8-9 मुझे लगता है)
- अपना उपयोगकर्ता नाम जोड़ें
- अपना डोमेन जोड़ें
Cmd प्रॉम्प्ट रन पर:
cd C:\Program Files\Cntlm\
cntlm -M
cntlm -H
- आपसे पासवर्ड मांगा जाएगा:
cygwin warning:
MS-DOS style path detected: C:\Program Files\Cntlm\cntlm.ini
Preferred POSIX equivalent is: /Cntlm/cntlm.ini
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
Password:
आपको मिलने वाला आउटपुट cntlm -H
कुछ इस तरह दिखाई देगा:
PassLM 561DF6AF15D5A5ADG
PassNT A1D651A5F15DFA5AD
PassNTLMv2 A1D65F1A65D1ASD51 # Only for user 'user name', domain 'DOMAIN'
- यह माना जाता है कि आप PassNTLMv2 का उपयोग करते हैं, इसलिए
#
पहले एक पंक्ति जोड़ें PassLM
और PassNT
उनका उपयोग न करें
cntlm -H
Ini फ़ाइल से आउटपुट को पेस्ट करें, के लिए लाइनों की जगह PassLM
, PassNT
और PassNTMLv2
, या मूल लाइनों पर टिप्पणी करें और अपना जोड़ें।
- अपने
Proxy
सर्वर जोड़ें । यदि आप नहीं जानते कि प्रॉक्सी सर्वर क्या है ... मैंने जो किया है, मैं AutoConfigURL
रजिस्ट्री कुंजी की तलाश में अपनी प्रॉक्सी ऑटो-कॉन्फिग फ़ाइल की तलाश में थाHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
। उस url पर नेविगेट करें और उस कोड को देखें जो जावास्क्रिप्ट होता है।
- वैकल्पिक रूप से आप उस पोर्ट को बदल सकते हैं जहाँ cntlm
Listen ####
लाइन को बदलकर सुनता है , जहाँ ####
पोर्ट नंबर है।
Cntlm के साथ NPM सेटअप करें
तो, आप अपने cntml प्रॉक्सी के लिए npm को इंगित करते हैं, आप आईपी का उपयोग कर सकते हैं, मैंने उपयोग किया localhost
और cntlm के लिए डिफ़ॉल्ट पोर्ट 3128
इसलिए मेरा प्रॉक्सी यूआरएल इस तरह दिखता है
http://localhost:3128
उचित आदेश के साथ:
npm config सेट प्रॉक्सी http: // localhost: 3128
बहुत सरल है। आप अपने सभी टूल उसी url के साथ सेटअप करते हैं, और आप केवल एक ही जगह पर पासवर्ड अपडेट करते हैं। जीवन इतना सरल है नहीं।
सेटअप करना होगा npm CA प्रमाणपत्र
Npm प्रलेखन सीए से
यदि आपका कॉर्पोरेट प्रॉक्सी अपने स्वयं के हस्ताक्षरित प्रमाणपत्र के साथ https कनेक्शन को रोक रहा है, तो इससे बचना आवश्यक है npm config set strict-ssl false
(बड़ा नहीं-नहीं)।
बुनियादी कदम
- अपने ब्राउज़र से प्रमाणपत्र प्राप्त करें (क्रोम अच्छी तरह से काम करता है)। बेस -64 एनकोडेड X.509 (.CER) के रूप में इसे निर्यात करें
- नई लाइनों के साथ बदलें
\n
- अपनी
.npmrc
पंक्ति को संपादित करेंca[]="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
मुद्दे
मैंने कभी-कभी npm तरह के हैंग को देखा है, इसलिए मैं (कभी-कभी जबरदस्ती) cntlm बंद कर देता हूं और इसे पुनरारंभ करता हूं ।