कॉर्पोरेट प्रॉक्सी के पीछे npm का उपयोग करना .pac


158

मुझे npm के माध्यम से कई पैकेज डाउनलोड करने की आवश्यकता है लेकिन हमारा कॉर्पोरेट प्रॉक्सी कॉन्फ़िगरेशन एक .pac फ़ाइल (विंडोज़ पर है)

मैं पहले ही कोशिश कर चुका हूं

npm config set proxy http://mydomain\username:password@1.2.3.4:8181/proxy.pac
npm config set https-proxy http://mydomain\username:password@1.2.3.4:8181/proxy.pac

या

npm config set proxy http://1.2.3.4:8181/proxy.pac
npm config set https-proxy http://1.2.3.4:8181/proxy.pac

लेकिन यह काम नहीं करता है ...

कोई उपाय? धन्यवाद



8
मुझे नहीं लगता कि यह प्रश्न एक डुप्लिकेट है, पीएसी स्क्रिप्ट में लक्ष्य आईपी / होस्ट पते के आधार पर कई प्रॉक्सी पते हो सकते हैं, जबकि घन केवल 1 प्रॉक्सी पते को संबोधित करता है - समीक्षा से
फेरीबग

1
एक भी उत्तर इंगित नहीं करता है कि पीएसी स्क्रिप्ट का उपयोग कैसे करें जिसमें लक्ष्य आईपी / होस्ट पते के आधार पर कई प्रॉक्सी पते हो सकते हैं। किसी को भी मदद कर सकते हैं कृपया
पार्थ सारथी घोष

2
मेरे proxy.pacलिए इससे प्रॉक्सी पता प्राप्त करने के लिए फ़ाइल को खोलने में मदद मिली । (मेरे मामले में मुझे बस 8080 पर पोर्ट स्विच करना पड़ा)।
खानाबदोश

@ParthaSarathiGhosh आप सही हैं, कोई भी उत्तर वास्तव में पीएसी लिपियों का उपयोग करने के तरीके के बारे में नहीं बताता है, इसलिए मैंने एक और उत्तर जोड़ा है जो इसे संबोधित करता है: stackoverflow.com/a/61811444 । यह कुछ साल की देरी है, लेकिन पहले से कहीं बेहतर है?
user1031921

जवाबों:


204

मुझे बस एक ऐसी ही समस्या थी, जहाँ मुझे हमारे प्रॉक्सी सर्वर के पीछे काम करने के लिए npm नहीं मिल सकता था।

मेरा उपयोगकर्ता नाम "डोमेन \ उपयोगकर्ता नाम" है - जिसमें प्रॉक्सी कॉन्फ़िगरेशन में स्लैश शामिल है, जिसके परिणामस्वरूप फ़ॉरवर्ड स्लैश दिखाई दे रहा है। इसलिए यह दर्ज करना:

npm config set proxy "http://domain\username:password@servername:port/"

इसके बाद इस npm config get proxyरिटर्न को चलाने : http: // डोमेन / उपयोगकर्ता नाम: पासवर्ड @ सर्वरनाम: पोर्ट /

इसलिए समस्या को ठीक करने के लिए मैंने इसके बजाय URL बैकस्लैश को इनकोड किया, इसलिए इसे दर्ज किया गया:

npm config set proxy "http://domain%5Cusername:password@servername:port/"

और इसके साथ ही प्रॉक्सी का उपयोग तय था।


5
इसका कारण आपका लापता% 5C .key हिस्सा C होना है .... देखें मैं इसे फिर से बाहर निकालता हूं
sinisterrook

1
मैंने अभी कुछ सामान अपडेट किया है और मेरे प्रॉक्सी ने फिर से काम करना बंद कर दिया है। यह पता चला है कि .npmrc फ़ाइल की "प्रॉक्सी" सेटिंग में (जैसा कि @Ovidiu Buligan द्वारा नीचे उल्लेख किया गया है) इसमें बैकस्लैश के लिए% 5C शामिल था, लेकिन "https- प्रॉक्सी" में सिर्फ "\" समाहित था। इसे बदलकर भी% 5C करने से समस्या ठीक हो गई। मुझे लगता है कि यह भी npm विन्यास सेट http_proxy " डोमेन% 5Cusername: पासवर्ड @ सर्वरनाम: पोर्ट /"
स्टीव रॉबर्ट्स

1
मैं npm को प्रॉक्सी के पीछे कॉन्फ़िगर करने की कोशिश कर रहा हूं, लेकिन npm कॉन्फ़िगरेशन का उपयोग करके "पिंग" करने का एक तरीका है। क्योंकि अगर मेरी गलती गलत है, तो मेरा उपयोगकर्ता मेरे कॉर्पोरेट डोमेन पर अवरुद्ध हो जाएगा।
रिकार्डो

3
मेरे लिए जो काम किया है वह पहले पर्यावरण चर चर को साफ करना है। सेट HTTP_PROXY = का उपयोग करें और
HTTPS_PROXY

4
कॉरपोरेट प्रॉक्सी के पीछे मेरे लिए हल strict-ssl=falseकी गई .npmrcकॉन्फ़िग फ़ाइल में जोड़ना - @ ovidiu-buligan और @
Alexander McFarlane से

64

pacइंटरनेट एक्सप्लोरर लैन सेटिंग्स में फ़ाइल के url को देखें और कॉन्फ़िगर की गई URL से pac फ़ाइल डाउनलोड करें। Pac फ़ाइल केवल एक जावास्क्रिप्ट फ़ाइल है जिसका नाम एक फ़ंक्शन हैFindProxyForURL विभिन्न परिदृश्यों में अलग-अलग प्रॉक्सी होस्ट देता है।

उस pac फ़ाइल में एक होस्ट खोजने की कोशिश करें जो आपको लगता है कि सामान्य वेब ट्रैफ़िक के लिए है और इसे .npmrc में प्लग करें C:\Users\<username>\.npmrc

proxy=http://<username>:<pass>@proxyhost:<port>
https-proxy=http://<uname>:<pass>@proxyhost:<port>

भले ही आप अपने कॉर्पोरेट मशीन पर अपने डोमेन और उपयोगकर्ता नाम के साथ लॉगिन कर सकते हैं, यह अत्यधिक संभव है कि उपयोगकर्ता सक्रिय निर्देशिका डोमेन नाम प्रॉक्सी के लिए आवश्यक नहीं है , केवल उपयोगकर्ता नाम और पासवर्ड (जो आपके सक्रिय निर्देशिका लॉगिन से भिन्न हो सकते हैं)

विशेष पासवर्ड पात्रों से बचने के साथ बेला करने के लिए मत भूलना।


धन्यवाद। मैंने .npmrc पर नेविगेट किया और सेटिंग्स बदल दी। यह काम किया
arn-arn

54

अपनी .pacफ़ाइल डाउनलोड करें । इसे किसी भी संपादक में खोलें और देखें PROXY = "PROXY X.X.X.X:80;। आपके पास कई प्रॉक्सी हो सकती हैं, उनमें से किसी को भी कॉपी करें और निम्नलिखित टर्मिनल कमांड चलाएं:

npm config set proxy http://X.X.X.X:80
npm config set https-proxy http://X.X.X.X:80

अब आपको किसी भी पैकेज को स्थापित करने में सक्षम होना चाहिए!


1
Https- प्रॉक्सी भाग के लिए, मुझे इसके लिए "... सेट करें https- प्रॉक्सी = http: // ..." के बजाय "... https- प्रॉक्सी http: // ..." सेट करना होगा। काम। बस मेरी $ .02।
निक

धन्यवाद सेटिंग http-http से http: // केवल एक चीज है जो काम करती है; बाद मैं bash से http_proxy और https_proxy पर्यावरण चर को परेशान करता हूँ!
एलेक्स पुन्नन

Https- प्रॉक्सी के लिए, मैं "https -xy https: /../" सेट नहीं कर सका, मुझे "https-प्रॉक्सी http: // ..." सेट करना पड़ा (https से https जानकारी -> http)
मंगल

वही भी git के लिए जाता है,git config --global http.proxy http://X.X.X.X:80 git config --global https.proxy http://X.X.X.X:80
कोड नाम जैक

38

मैंने इस समस्या को इस तरह हल किया:

1) मैं इस कमांड को चलाता हूं:

npm config set strict-ssl false

2) फिर https के बजाय http के साथ चलने के लिए npm सेट करें:

npm config set registry "http://registry.npmjs.org/"

3) फिर अपना पैकेज स्थापित करें

npm install <package name>


2
बस यह इंगित करने के लिए कि npm के सख्त-एसएसएल को गलत पर सेट करना एक सुरक्षा मुद्दा है। ca[]एनपीएम पर संपत्ति को ठीक से स्थापित करने के बजाय विचार करें ।
हारून सी

26

@ रॉबर्ट रॉबर्ट्स के उत्तर पर विस्तार करने के लिए।

मेरा उपयोगकर्ता नाम "डोमेन \ उपयोगकर्ता नाम" का है - प्रॉक्सी कॉन्फ़िगरेशन में स्लैश सहित एक फॉरवर्ड स्लैश दिखाई देता है। इसलिए यह दर्ज करना:

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 उन पार्स किए गए मानों को प्राप्त करने के लिए था जो मैंने ऊपर सेट किए थे, और इसी तरह मुझे डबल एन्कोडिंग के बारे में पता चला। अजीब।

अनिवार्य रूप से आपको निम्नलिखित आवश्यकताओं का पता लगाना चाहिए:

  1. एक है DOMAINप्रमाणीकरण के लिए स्ट्रिंग आवश्यक है
  2. क्या आपको विशेष वर्णों को एनकोड करने की आवश्यकता है?
    • रिक्त स्थान और (@) संकेत विशेष रूप से चुनौतीपूर्ण हैं

सादर।

विन्डोज़ पर्यावरण वारिस (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

  1. खुला C:\Program Files\Cntlm\cntlm.ini(आपको व्यवस्थापक अधिकारों की आवश्यकता हो सकती है)
  2. देखो Usernameऔर Domainलाइनों (लाइन 8-9 मुझे लगता है)
    • अपना उपयोगकर्ता नाम जोड़ें
    • अपना डोमेन जोड़ें
  3. 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:
  4. आपको मिलने वाला आउटपुट cntlm -Hकुछ इस तरह दिखाई देगा:

    PassLM          561DF6AF15D5A5ADG  
    PassNT          A1D651A5F15DFA5AD  
    PassNTLMv2      A1D65F1A65D1ASD51  # Only for user 'user name', domain 'DOMAIN'
    • यह माना जाता है कि आप PassNTLMv2 का उपयोग करते हैं, इसलिए #पहले एक पंक्ति जोड़ें PassLMऔर PassNTउनका उपयोग न करें
  5. cntlm -HIni फ़ाइल से आउटपुट को पेस्ट करें, के लिए लाइनों की जगह PassLM, PassNTऔर PassNTMLv2, या मूल लाइनों पर टिप्पणी करें और अपना जोड़ें।
  6. अपने Proxyसर्वर जोड़ें । यदि आप नहीं जानते कि प्रॉक्सी सर्वर क्या है ... मैंने जो किया है, मैं AutoConfigURLरजिस्ट्री कुंजी की तलाश में अपनी प्रॉक्सी ऑटो-कॉन्फिग फ़ाइल की तलाश में थाHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings । उस url पर नेविगेट करें और उस कोड को देखें जो जावास्क्रिप्ट होता है।
  7. वैकल्पिक रूप से आप उस पोर्ट को बदल सकते हैं जहाँ 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 (बड़ा नहीं-नहीं)।

बुनियादी कदम

  1. अपने ब्राउज़र से प्रमाणपत्र प्राप्त करें (क्रोम अच्छी तरह से काम करता है)। बेस -64 एनकोडेड X.509 (.CER) के रूप में इसे निर्यात करें
  2. नई लाइनों के साथ बदलें \n
  3. अपनी .npmrcपंक्ति को संपादित करेंca[]="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"

मुद्दे

मैंने कभी-कभी npm तरह के हैंग को देखा है, इसलिए मैं (कभी-कभी जबरदस्ती) cntlm बंद कर देता हूं और इसे पुनरारंभ करता हूं ।


7

मैं इसके साथ कई मुद्दों पर भाग चुका था और अंत में मैंने जो किया वह इस प्रकार है:

  1. "स्वचालित रूप से प्रमाणित" चयनित के साथ प्रयुक्त फ़िडलर
  2. फिडलर कस्टम नियमों में, मैंने जोड़ा

    if (m_AutoAuth) {oSession["X-AutoAuth"] = "domain\\username:password";}
  3. अंत में npm में मैंने http: // localhost: 8888 पर प्रॉक्सी सेट किया

यह ठीक काम किया।


धन्यवाद! एक जादू की तरह काम किया!! मेरा परिदृश्य: उपयोगकर्ता नाम "डोमेन / उपयोगकर्ता नाम" प्रारूप का था। पासवर्ड में एक "@" था। कोई भी URL एन्कोडिंग / डिकोडिंग आदि नहीं करना था
A_B

मेरे लिए पूरी तरह से काम किया। बहुत बहुत धन्यवाद। केवल यह इंगित करना चाहता था कि उपयोग करने "domain\\username:password"से पहचान की चोरी का खतरा पैदा हो सकता है। इसके बजाय "(default)"कस्टम नियमों में विन्यास का उपयोग आकर्षक ढंग से काम किया। जब आप इस काम के लिए "npm" का उपयोग करते हैं तो फ़िडलर को चलाने की आवश्यकता होती है।
16:10 बजे pk10

7

कॉर्पोरेट फ़ायरवॉल के साथ संघर्ष करने वाले किसी भी व्यक्ति के लिए, एसएसएल के साथ समस्याएं (स्थानीय जारीकर्ता प्रमाण पत्र प्राप्त करने में असमर्थ), यहाँ कुछ चरण दिए जा सकते हैं:

एसएसएल के बारे में भूल जाओ

यदि आप एसएसएल के बारे में चिंतित नहीं हैं, तो आप अपने प्रॉक्सी को सेट करके और गैर-सुरक्षित संस्करण में रजिस्ट्री को बदलकर कई पिछले योगदानकर्ताओं की सलाह का पालन कर सकते हैं:

npm config set proxy http://username:password@proxyname:port
npm config set https-proxy http://username:password@proxyname:port
npm config set registry http://registry.npmjs.org/

यहां एक त्वरित "गोचा", मेरे प्रॉक्सी क्रेडेंशियल सुरक्षित और गैर-सुरक्षित अनुरोधों के लिए समान हैं (ध्यान दें कि मैंने अपने प्रोटोकॉल को http: // के रूप में https- प्रॉक्सी कॉन्फ़िगरेशन के लिए कैसे छोड़ा था )। यह आपके लिए समान हो सकता है, और यह नहीं हो सकता है।

मैं एसएसएल रखना चाहता हूं

यदि आप एसएसएल रखना चाहते हैं, और उपयोग नहीं करना चाहते हैं strict-ssl=false, तो आपके पास करने के लिए अधिक काम है। मेरे लिए, मैं एक कॉर्पोरेट फ़ायरवॉल के पीछे हूँ और हम स्व-हस्ताक्षरित प्रमाणपत्र का उपयोग कर रहे हैं, इसलिए मुझे त्रुटि प्राप्त हुई unable to get local issuer certificate। यदि आप मेरे समान नाव में हैं, तो आपको cafile=npm कॉन्फिग फ़ाइल में विकल्प सेट करना होगा । सबसे पहले, आपको एक PEM फ़ाइल बनाने की आवश्यकता है जो आपके स्व-हस्ताक्षरित प्रमाणपत्रों के बारे में जानकारी रखती है। यदि आप नहीं जानते कि ऐसा कैसे किया जाए, तो यहां 3 पार्टी सॉफ्टवेयर का उपयोग किए बिना विंडोज वातावरण के लिए निर्देश दिए गए हैं:

हमें स्पष्ट रूप से इंगित करने की आवश्यकता है कि कौन से प्रमाण पत्र पर भरोसा किया जाना चाहिए क्योंकि हम स्वयं हस्ताक्षरित प्रमाण पत्र का उपयोग कर रहे हैं। मेरे उदाहरण के लिए, मैंने www.google.com पर Chrome का उपयोग करके नेविगेट किया ताकि मैं प्रमाणपत्रों को हड़प सकूं।

Chrome में, निरीक्षण -> सुरक्षा -> दृश्य प्रमाणपत्र पर जाएं। आप सभी प्रमाणपत्र देखेंगे जो एसएसएल कनेक्शन की अनुमति देते हैं। ध्यान दें कि ये प्रमाण पत्र कैसे स्वयं हस्ताक्षरित हैं। धुंधला-आउट हिस्सा मेरी कंपनी है, और हम प्रमाणित प्राधिकारी नहीं हैं। आप पूर्ण प्रमाणपत्र पथ को P7B फ़ाइल के रूप में निर्यात कर सकते हैं, या आप प्रमाणपत्र को CER फ़ाइलों (base64 एन्कोडिंग) के रूप में व्यक्तिगत रूप से निर्यात कर सकते हैं। P7B के रूप में पूर्ण पथ निर्यात करना आपको बहुत अच्छा नहीं करता है क्योंकि आपको इस फ़ाइल को एक प्रमाणपत्र प्रबंधक में खोलने की आवश्यकता होगी और वैसे भी व्यक्तिगत सीईआर फ़ाइलों के रूप में निर्यात करना होगा। विंडोज में, P7B फाइल को डबल-क्लिक करने से सर्टिफिकेट मैनेजर एप्लिकेशन खुल जाएगा।

यहां छवि विवरण दर्ज करें

सीईआर (बेस 64) के रूप में निर्यात करना वास्तव में निम्नलिखित प्रारूप में एक पाठ फ़ाइल है:

-----BEGIN CERTIFICATE-----
MIIGqzCCBZOgAwIBAgITIwAAABWhFPjwukYhTAADAAAAFTANBgkqhkiG9w0BAQUF
ADBFMRMwEQYKCZImiZPyLGQBGRYDY29tMRYwFAYKCZImiZPyLGQBGRYGaXJ2aW5n
b0pvCkNmjWzaNNUg2hYET+pP5nP75aRu+kPRl9UnlQ....rest of certificate...
-----END CERTIFICATE-----

हमारी PEM फ़ाइल बनाने के लिए, हमें बस इन प्रमाणपत्रों को एक दूसरे के ऊपर एक सिंगल फ़ाइल में स्टैक करना होगा और एक्सटेंशन को .pem में बदलना होगा। मैंने ऐसा करने के लिए नोटपैड का इस्तेमाल किया।

आप प्रमाण पत्र पथ से रिवर्स ऑर्डर में प्रमाण पत्र को ढेर करते हैं। तो ऊपर, मैं * .google.com के साथ शुरू करूंगा, फिर नीचे वेबस्पेंस पेस्ट करूंगा, फिर सीए 1 जारी करना आदि। इस तरह से प्रमाणपत्रों को ऊपर से नीचे तक उचित रूट सीए के लिए खोजा जाता है। बस सहित रूट सीए काम नहीं करेगा, लेकिन हमें सभी प्रमाणपत्रों को शामिल करने की भी आवश्यकता नहीं है। उपरोक्त पथ से, मुझे केवल उन प्रमाणपत्रों को शामिल करने की आवश्यकता है जो वेबेंस प्रमाणपत्र (इश्यू सीए 1, पॉलिसी सीए, रूट सीए) जारी करने से पहले आते हैं।

एक बार इन स्व-हस्ताक्षरित समारोहों को PEM फ़ाइल में सहेजने के बाद, हम npm को इन प्रमाणपत्रों को हमारे विश्वसनीय CA के रूप में उपयोग करने का निर्देश देने के लिए तैयार हैं। बस कॉन्फ़िगर फ़ाइल सेट करें और आपको जाने के लिए अच्छा होना चाहिए:

npm config set cafile "C:\yourcerts.pem"

अब, अपने परदे के पीछे सेट (http और https), और रजिस्ट्री सेट के साथ https://registry.npmjs.org, आपको कॉरपोरेट फ़ायरवॉल के पीछे पैकेजों को स्थापित करने में सक्षम होना चाहिए, बिना strict-sslसेटिंग के स्वयं-हस्ताक्षरित प्रमाण पत्र के साथ ।


6

यदि एनपीएम प्रमाणीकरण त्रुटि दे रहा है तो आप फ़िडलर की जांच कर सकते हैं। इसे स्थापित करना और कॉन्फ़िगर करना आसान है। फ़िडलर नियम को स्वचालित रूप से प्रमाणीकृत करें। IN .npmrc इन गुणों को सेट करें

registry=http://registry.npmjs.org
proxy=http://127.0.0.1:8888
https-proxy=http://127.0.0.1:8888
http-proxy=http://127.0.0.1:8888
strict-ssl=false

यह मेरे लिए काम :)


आश्चर्यजनक रूप से, मेरे प्रॉक्सी के लिए मेरे द्वारा उपयोग किए गए किसी भी विन्यास ने काम नहीं किया, मैंने इस और ओपन फिडलर का उपयोग किया और मैं इसे ठीक कर सकता था ...
रॉबर्टो

5

इसे आज़माएँ, निम्नानुसार npm में प्रॉक्सी सेट करें

npm config set proxy "http://<user-name>:<password>@<proxy-url>:<port>"
npm config set https-proxy "http://<user-name>:<password>@<proxy-url>:<port>"
npm config set strict-ssl false
npm config set registry "http://registry.npmjs.org/"

4

आप अपने सर्वर व्यवस्थापक या समर्थन से प्रॉक्सी होस्ट और पोर्ट प्राप्त करेंगे।

इसके बाद सेट करें

npm config set http_proxy http://username:password@proxyofmycomp.com:itsport
npm config set proxy http://username:password@proxyofmycomp.com:itsport

यदि पासवर्ड में कोई विशेष वर्ण% urlencode के साथ है। जैसे: - पाउंड (हैश) शूल को 23% से बदला जाना चाहिए।

यह मेरे लिए काम किया ...


3

बस अपने प्रोजेक्ट फ़ोल्डर में .npmrc फ़ाइल नामक एक फ़ाइल बनाएं, यह सिस्टम स्तर पर प्रॉक्सी सेटिंग से बच जाएगा

#Without password
proxy=http://ipaddress:80
https-proxy=http://ipaddress:80

#With password
proxy=http://<username>:<pass>@proxyhost:<port>
https-proxy=http://<uname>:<pass>@proxyhost:<port>

यदि आप प्रॉक्सी का उपयोग नहीं करते हैं तो इस तरह से टिप्पणी करें

#proxy=http://ipaddress:80
#https-proxy=http://ipaddress:80

#With password
#proxy=http://<username>:<pass>@proxyhost:<port>
#https-proxy=http://<uname>:<pass>@proxyhost:<port>

3

मौजूदा उत्तरों में से कोई भी यह नहीं बताता है कि पीएसी फ़ाइल के साथ npm का उपयोग कैसे करें। कुछ पीएसी फ़ाइल को डाउनलोड करने का सुझाव देते हैं, मैन्युअल रूप से इसका निरीक्षण करते हैं, और "PROXY ..." स्ट्रिंग्स में से एक को चुनते हैं। लेकिन यह काम नहीं करता है यदि PAC फ़ाइल को कई प्रॉक्सी से चुनने की आवश्यकता है, या यदि PAC फ़ाइल में कुछ URL के लिए प्रॉक्सी को बायपास करने के लिए जटिल तर्क हैं।

इसके अलावा, कुछ कॉर्पोरेट प्रॉक्सी को NTLM प्रमाणीकरण की आवश्यकता होती है। CNTLM प्रमाणीकरण को संभाल सकता है, लेकिन PAC फ़ाइलों का समर्थन नहीं करता है।

एक विकल्प अल्पाका का उपयोग करना है , जो एक जावास्क्रिप्ट वीएम में पीएसी फ़ाइल को निष्पादित करता है, और परिणामस्वरूप प्रॉक्सी के साथ एनटीएलएम प्रमाणीकरण करता है।


2

यदि आप प्रॉक्सी के साथ एक कॉर्पोरेट नेटवर्क के पीछे हैं, तो मैंने सिर्फ एक ntlm प्रॉक्सी टूल का उपयोग किया है और ntlm द्वारा दिए गए पोर्ट और प्रॉक्सी का उपयोग किया है, उदाहरण के लिए मैंने इस कॉन्फ़िगरेशन का उपयोग किया है:

strict-ssl=false
proxy=http://localhost:3125

आशा है कि ये आपकी मदद करेगा।


2

Cmd या GIT बैश या अन्य प्रॉम्प्ट पर कमांड का उपयोग करें

$ npm config set proxy "http://192.168.1.101:4128"

$ npm config set https-proxy "http://192.168.1.101:4128"

जहाँ 192.168.1.101 प्रॉक्सी आईपी है और 4128 पोर्ट है। अपनी प्रॉक्सी सेटिंग के अनुसार बदलें।



1

काम पर हम अपने प्रॉक्सी के रूप में ZScaler का उपयोग करते हैं। जिस तरह से मैं काम करने के लिए npm प्राप्त करने में सक्षम था, वह केवल Cntlm का उपयोग करना था ।

इस उत्तर को देखें:

NTLM प्रॉक्सी के पीछे NPM


1

यह कोशिश करो, यह केवल मेरे लिए काम किया गया था:

npm --proxy http: //: @proxyhost: --https -xy http: //: @proxyhost: --strict-ssl false install -g पैकेज

विकल्प पर ध्यान दें - sstrict-ssl false

सौभाग्य।


1

NPM प्रॉक्सी स्वीकार किए जाते हैं जवाब में बताया गया सेटअप समस्या का समाधान है, लेकिन जैसा कि आप में देख सकते हैं इस NPM मुद्दा , कुछ निर्भरता GIT उपयोग करता है और कि बनाता है Git प्रॉक्सी जरूरत सेटअप , और इस प्रकार किया जा सकता है:

git config --global http.proxy http://username:password@host:port
git config --global https.proxy http://username:password@host:port

एनपीएम प्रॉक्सी सेटअप का उल्लेख:

npm config set proxy "http://username:password@host:port"
npm config set https-proxy "http://username:password@host:port"
npm config set strict-ssl false
npm config set registry "http://registry.npmjs.org/"

0

मेरे पास एक जैसा मुद्दा था और मैंने ऊपर दिए गए सभी वर्कअराउंड की कोशिश की, लेकिन उनमें से किसी ने भी मेरे लिए काम नहीं किया (मैं अपने पासवर्ड में विशेष वर्णों (जैसे '@' प्रतीक) का उपयोग कर रहा था और मुझे डोमेन नाम जोड़ने की भी आवश्यकता थी)।

इसके अलावा मैं सादा पाठ के रूप में अपना पासवर्ड जोड़ने के लिए थोड़ा आशंकित था। यह इन सभी चुनौतियों से पार पाने का सबसे आसान उपाय था, किसी प्रकार के रिवर्स प्रॉक्सी (जैसे फिडलर) का उपयोग करना।

मैंने एसओ में इस उत्तर में कॉन्फ़िगरेशन चरणों को पहले ही विस्तृत कर दिया है।


0

.Typingsrc फ़ाइल में नीचे की पंक्तियों को जोड़ने से मुझे मदद मिली।

{
    "rejectUnauthorized": false,
    "registryURL" :"http://api.typings.org/"
 }

0

मैं इसी तरह की समस्या में भाग गया और पता चला कि मेरी npm config फाइल (.npmrc) में गलत रजिस्ट्री प्रविष्टि है। यह टिप्पणी की और फिर से npm स्थापित किया। इसने काम कर दिया।


0

ओएस: विंडोज 7

मेरे लिए काम करने वाले कदम:

  1. npm config get proxy
  2. npm config get https-proxy

  3. टिप्पणियाँ: मैंने अपनी प्रॉक्सी सेटिंग जानने के लिए इस कमांड को निष्पादित किया
    npm config rm proxy

  4. npm config rm https-proxy
  5. npm config set registry=http://registry.npmjs.org/
  6. npm install

0

क्योंकि मुझे अभी भी काम पर प्रॉक्सी सेटिंग्स सेट करने और उन्हें घर पर बंद करने में समस्या है, मैंने npm-corpo-proxy.sh को स्क्रिप्ट किया और प्रकाशित किया है । हर कॉरपो में पासवर्ड को अक्सर बदलना पड़ता है और इसमें विशेष वर्ण होने चाहिए, जो कि एनपीएम कॉन्फिग को फीड करने से पहले एन्कोड किया जाना चाहिए (बैकैश फॉर्म डोमेन \ यूजर के लिए भी)।


0

Google पर थोड़ी खोज से मैंने जो पहली कोशिश की वह यह थी

npm config set registry http://registry.npmjs.org/
npm config set proxy "your proxy"
npm config set https-proxy "your proxy"

लेकिन फिर भी npm "npm install" करने की कोशिश करते समय कनेक्शन खो देता है। तब मैंने कमांड प्रॉम्प्ट में इस लाइन को चलाया और अब मैं npm इंस्टॉल का उपयोग कर सकता हूं

set NODE_TLS_REJECT_UNAUTHORIZED=0

0

मैं इसे CNTLM के साथ काम नहीं कर सका। मैंने ऊपर पोस्ट की गई सभी सूचनाओं का पालन करने की कोशिश की, लेकिन प्रॉक्सी अभी भी कनेक्शन को अधिकृत नहीं करता है। फ़िडलर के साथ, आपको बस इसे इंस्टॉल करना होगा और स्वचालित रूप से प्रमाणित विकल्प की जांच करनी होगी। लेकिन काम करने के लिए, मुझे अपने यूजर फोल्डर से .npmrc फाइल को हटाना था, और यहाँ बताए अनुसार पर्यावरण वेरिएबल्स को सेट करना था:

set npm_config_https-proxy="http://127.0.0.1:8888"

set npm_config_registry="http://registry.npmjs.org/"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.