วิธีการติดตั้ง NPM หลัง proxy proxy ใน Windows


30

ฉันจำเป็นต้องเรียกใช้ Node และ NPM เวอร์ชันล่าสุดบน Windows ฉันติดตั้งโหนด 0.5.8 และดาวน์โหลดแหล่งที่มาของ NPM จาก GitHub ขั้นตอนที่ฉันติดตามเพื่อติดตั้ง NPM มีการระบุไว้ในเว็บไซต์ GitHub แต่ฉันมีปัญหาในการใช้คำสั่งต่อไปนี้:

node cli.js install npm -gf

แต่มันล้มเหลวด้วยข้อความแสดงข้อผิดพลาดต่อไปนี้:

Error: connect UNKNOWN
at errnoException (net_uv.js:566:11)
at Object.afterConnect [as oncomplete] (net_uv.js:557:18)

System Windows_NT 5.1.2600
command "...\\Node\\bin\\node.exe" "...\\npm\\cli.js" "install" "npm" "-gf"
cwd ...\npm
node -v v0.5.8
npm -v 1.0.94
code UNKNOWN

ฉันคิดว่านี่เป็นปัญหาเพราะฉันต้องการการรับรองความถูกต้องที่พร็อกซีของฉันเพื่อเชื่อมต่อกับอินเทอร์เน็ต แต่ฉันไม่พบวิธีที่จะบอกให้ผู้ติดตั้งใช้ข้อมูลรับรองสำหรับการเข้าสู่ระบบ มีความเป็นไปได้หรือไม่ที่จะมอบข้อมูลพร็อกซี IP และข้อมูลเข้าสู่ระบบให้กับการติดตั้ง npm ผ่านอาร์กิวเมนต์บรรทัดคำสั่ง?

ฉันสามารถให้บันทึกเต็ม (แต่ดูเหมือนว่าจะไม่มีข้อมูลที่เกี่ยวข้องมากขึ้น) โดยใช้ pastebin หากจำเป็น


6
เคล็ดลับเล็กน้อยถ้าชื่อผู้ใช้มีโดเมน \ ผู้ใช้แทนแบ็กสแลชด้วยรหัสหลบหนี http (% 5C)

@layos ขอบคุณมาก ๆ หากนี่คือ reddit ฉันจะให้ทองคุณ
Korinna

คำตอบ:


39

set http_proxyทำงานได้ดีจริงๆสำหรับฉัน แต่ฉันต้องป้อนทุกครั้งที่เปิดพรอมต์คำสั่ง ดังนั้นฉันต้องรวมหลายคำตอบและตอนนี้ฉันเป็นแบบถาวร

ลำดับของฉันไปดังนี้:

  • ไปที่ C:\Users\YourUserName
  • สร้างไฟล์ชื่อ .npmrc
  • ในไฟล์นั้นให้พิมพ์ดังต่อไปนี้ (หากคุณอยู่ในโดเมนโฆษณา):

proxy = http://domain\\username:password@ip:port

  • หรือใช้นี่คือคุณไม่ได้อยู่ในโดเมนโฆษณา:

proxy = http://username:password@ip:port

  • บันทึกไฟล์
  • เปิดพรอมต์คำสั่งแล้วลองใช้ npm

คนอื่นประสบความสำเร็จเป็นพิเศษด้วยคำสั่งพิเศษต่อไปนี้:

strict-ssl = false

* คุณควรจะสามารถใช้ที่อยู่ IP หรือ URL ไปยังพร็อกซีแทน "IP" ด้านบน

สตริงพร็อกซีของคุณอาจต้องมีการปรับแต่งเล็กน้อย แต่สิ่งนี้ทำให้ฉันไม่ต้องเพิ่มสิ่งนี้ทุกครั้ง

ไชโย


3
หัวขึ้นถ้ารหัสผ่านของคุณมี "@" npm จะไม่แยกการตั้งค่าพร็อกซีของคุณอย่างถูกต้อง วิธีแก้ปัญหาที่อาจเกิดขึ้นคือการใส่ชื่อผู้ใช้ปลอม: รหัสผ่านในการกำหนดค่า npm และใช้พร็อกซีในพื้นที่ (เช่นพู้ทำเล่น) เพื่อแก้ไขส่วนหัวการอนุญาตให้ใช้สิทธิ์ของคำขอเพื่อให้มีชื่อผู้ใช้ที่ถูกต้อง: รหัสผ่าน โปรดจำไว้ว่าชื่อผู้ใช้: รหัสผ่านที่เก็บไว้ใน Proxy-Authorization ถูกเข้ารหัส base64
BStruthers

9
เตรียมพร้อมที่จะทำงานกับ:proxy = http://ip:port/ https-proxy = http://ip:port/ registry = http://registry.npmjs.org/ strict-ssl = false
ลุค

1
ไม่ได้รับของฉันที่จะทำงานกับชื่อผู้ใช้: รหัสผ่าน
philx_x

1
สวัสดีฉันลองใช้domain\\user:password@urltoproxy:portอย่างไรก็ตามเมื่อฉันเรียกใช้npm installตัวเลือกการเปลี่ยนแปลงเป็นdomain/user:password@urltoproxy:portดังนั้นฉันจะแก้ไขได้อย่างไร
ยาโคบชไนเดอร์

ฉันมีปัญหาเช่นเดียวกับ @JacobSchneider บน. npmrc ของฉัน: -ssl=false registry=http://registry.npmjs.org/ proxy=http://domain\\username:password#@proxy.url:8080 จากนั้นเมื่อฉันได้รับการตั้งค่าจาก config ด้วยnpm config get proxy: http://domain/username:password#@proxy.url:8080 โปรดทราบว่าเครื่องหมายแบ็กสแลชที่หลบหนี '\\' เปลี่ยนเป็นเครื่องหมายทับหน้า '/'
pompalini

10

บางทีการตั้งค่าตัวแปรสภาพแวดล้อมจะทำงานให้คุณ:

set HTTP_PROXY=http://user:pass@server.url:port

(ในกรณีของฉันวิธีนี้จะแก้ปัญหา "เชื่อมต่อ UNKNOWN" แต่ฉันได้รับข้อผิดพลาด "socket hang up" ที่แตกต่างไปจากเดิมอย่างสิ้นเชิงฉันยังลองตั้งค่าตัวแปรสภาพแวดล้อม HTTPS_PROXY แต่ได้ผลลัพธ์เดียวกัน)


ฉันพยายามตั้งค่าตัวแปรสภาพแวดล้อมและพยายามส่งผ่านผู้ใช้ --proxy : pass@server.url: พอร์ตไปยังคำสั่ง แต่ตอนนี้ฉันได้รับ ECONNREFUSED เสมอ .. ฉันต้องระบุโดเมนโฆษณาของฉันเพื่อล็อกอินพร็อกซีหรือไม่
โทเบียส

@Tobias ลองset HTTP_PROXY=http://domain\user:pass@server.url:port
Adam Grant

8

ฉันมีปัญหาที่เหมือนกันนี้และนี่คือสิ่งที่ฉันทำเพื่อให้งานนี้:

  • ไปที่: C:\Users\YourUserName
  • สร้างไฟล์ชื่อ .npmrc
  • และรายการจะอ่าน:

    registry = http://registry.npmjs.org
    
  • ลองคำสั่งnode cli.js install npm -gfอีกครั้ง


ฉันสร้างไฟล์ที่มีเนื้อหาที่คุณพูดถึง แต่ยังคงได้รับข้อผิดพลาด UNKNOWN เชื่อมต่อ :(
Tobias

ขอบคุณสำหรับสิ่งนี้ ทำ "npm config ตั้งค่ารีจิสทรีregistry.npmjs.org " เพื่อให้ได้ https: // และทุกอย่างดีในการตั้งค่า windows ของฉัน
กาวิน Gilmour

1
ถ้ามีคนได้รับข้อความ ETIMEOUT เพิ่มการตั้งค่าพร็อกซี่ด้วยnode config set proxy http://username:password@server:port
Jeremy S.

สิ่งที่ทำงานได้สำหรับฉันคือการสร้าง~/.npmrcไฟล์เช่นด้านบนซึ่งบอก npm ให้ใช้http://รีจิสทรีแทนhttps://และจากนั้นตั้งค่าhttp_proxyตัวแปรสภาพแวดล้อมของฉันเป็นhttp://myusername:mypassword@proxy.company.com:1234
Maxy-B

หัวขึ้นถ้ารหัสผ่านของคุณมี "@" npm จะไม่แยกการตั้งค่าพร็อกซีของคุณอย่างถูกต้อง วิธีแก้ปัญหาที่อาจเกิดขึ้นคือการใส่ชื่อผู้ใช้ปลอม: รหัสผ่านในการกำหนดค่า npm และใช้พร็อกซีในพื้นที่ (เช่นพู้ทำเล่น) เพื่อแก้ไขส่วนหัวการอนุญาตให้ใช้สิทธิ์ของคำขอเพื่อให้มีชื่อผู้ใช้ที่ถูกต้อง: รหัสผ่าน โปรดจำไว้ว่าชื่อผู้ใช้: รหัสผ่านที่เก็บไว้ใน Proxy-Authorization ถูกเข้ารหัส base64
BStruthers

4

หลังจากการวิจัยฉันสามารถใช้วิธีนี้ได้:

  1. ติดตั้งพร็อกซีเซิร์ฟเวอร์การอนุญาต NTLM หรือพร็อกซีเซิร์ฟเวอร์อื่นสำหรับ NTLM เช่น Cntlm โดยส่วนตัวแล้วฉันชอบเซิร์ฟเวอร์หลามเพราะฉันสามารถคนจรจัดได้และประสิทธิภาพไม่ได้เป็นปัญหา

  2. ตั้งค่าการกำหนดค่า; โปรดทราบว่าในกรณีของฉันฉันต้องเปิดใช้งานทั้งโหมด LM และ NT และฉันจะสงสัยว่าเป็นกรณีปกติทุกวันนี้

  3. ตั้งค่าตัวแปรสภาพแวดล้อม http_proxy และ https_proxy ให้ชี้ไปที่พร็อกซีท้องถิ่นของคุณ:

    ตั้งค่า http_proxy = "localhost: 5865"
    ตั้งค่า https_proxy = "localhost: 5865"

  4. NPM ควรใช้งานได้ในตอนนี้แน่นอนว่าควรจะถูกเรียกใช้งานจากเชลล์ที่กำหนดตัวแปรสภาพแวดล้อมข้างต้น


3

ต่อไปนี้ใช้งานได้สำหรับฉัน

บน Windows 7:

npm config set proxy xxhttp://username:password@proxyhost:port# 

สิ่งนี้ควรสร้างไฟล์ชื่อ.npmrcในC:/users/<username>โฟลเดอร์


3

พิมพ์สิ่งนี้ในบรรทัดคำสั่ง:

npm set proxy http://user:pass@ip:port

npm set https-proxy http://user:pass@ip:port

อย่าลืมรวมHTTP: //หน้าชื่อผู้ใช้ของคุณ มันใช้งานได้สำหรับฉัน


2

ปัญหานี้แก้ไขได้สำหรับฉันหลังจากสร้างไฟล์. npmrcดังกล่าวแล้วเรียกใช้คำสั่ง adduser และทำตามคำสั่ง cmd

npm adduser

ใช้คำสั่งต่อไปนี้เพื่อดูว่าคุณมีชื่อผู้ใช้ที่ได้รับอนุญาตหรือไม่:

npm whoami

2

แต่ละคำตอบข้างต้นต้องการให้ผู้ใช้เขียนรหัสผ่านของเธอในไฟล์ข้อความหรือในตัวแปรสภาพแวดล้อม

โดยส่วนตัวแล้วฉันไม่ชอบวิธีแก้ปัญหาแบบนี้เพราะวิธีการที่ไม่ปลอดภัยของพวกเขา ดังนั้นฉันจึงพยายามที่จะเขียนแอปพลิเคชันที่ฉีดโทเค็น Kerberos ของผู้ใช้ปัจจุบันในการแลกเปลี่ยนระหว่างไคลเอ็นต์ (npm, bower, git) และพร็อกซี ดังกล่าวกล่าวว่า Active Directory เป็นเพียงการนำ Kerberos ไปใช้เท่านั้น

ฉันใช้ซอฟต์แวร์นี้ทุกวันบนโฮสต์ Windows 8.1 คุณสามารถค้นหารหัส (golang) และไบนารีการเปิดตัวครั้งแรกในhttps://github.com/nilleb/authentication-proxy


1

ทั้งสามสิ่งนี้ทำงานได้สำหรับฉันใน. npmrc

proxy = http://unam:pwd@host:port
https-proxy = http://unam:pwd@host:port
registry = http://registry.npmjs.org

1

อย่างน้อยใน Windows มันใช้งานได้สำหรับฉันด้วยการตั้งค่าต่อไปนี้:

proxy = http: // โดเมน % 5C ชื่อผู้ใช้ : รหัสผ่าน @ proxy_ip : พอร์ต

เช่น (1) ใช้%5Cแทน\(ตามที่แนะนำที่อื่น) และ (2) ใช้ที่อยู่ IP แทนชื่อเครื่องในท้องถิ่นสำหรับพร็อกซีเซิร์ฟเวอร์


สิ่งนี้ถูกต้อง - โดเมน + ชื่อผู้ใช้และรหัสผ่านจะต้องมีการเข้ารหัส URL แยกกัน เช่นถ้าคุณมี # ในรหัสผ่านของคุณให้แทนที่ด้วย% 23
saille

1

คุณจะได้รับพรอกซีโฮสต์และพอร์ตจากผู้ดูแลเซิร์ฟเวอร์หรือฝ่ายสนับสนุนของคุณ

หลังจากนั้นก็ตั้งค่า

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

หากมีอักขระพิเศษในรหัสผ่านให้ลองด้วย% urlencode เช่น: - ปอนด์ (แฮ)) shuold จะถูกแทนที่ด้วย% 23


2
คำตอบของคุณเวอร์ชันใดที่ใช้กับคำถามที่ถูกถามเมื่อ 3 ปีก่อน?
Jason Aller

ฉันเชื่อว่ามันไม่สำคัญ ฉันพบวิธีแก้ปัญหานี้หลังจากพยายามมากและไม่เคยรู้ว่ารหัสผ่านของฉันเป็นปัญหาเพื่อที่จะทำให้มันสมบูรณ์แบบ anwser ไม่ว่าคำถามจะถูกถามแม้กระทั่งก่อนสิบปี
:)

0

วิธีแก้ปัญหาสำหรับฉันมีดังต่อไปนี้:

การกำหนดค่า npm config http_proxy http: // ชื่อผู้ใช้ : รหัสผ่าน @ host / IP : พอร์ต

NPM การกำหนดค่าการตั้งค่าพร็อกซี่ http: // ชื่อผู้ใช้ : รหัสผ่าน @ โฮสต์ / IP : พอร์ต

แทนที่พารามิเตอร์ด้วยค่าในกรณีของฉัน

ชื่อผู้ใช้ : (ว่าง)

รหัสผ่าน : (ว่าง)

โฮสต์ / IP : 192.36.36.110

พอร์ต : 8080

ดังนั้นคำสั่งของฉันคือ

ชุดการกำหนดค่า npm http_proxy http: //: @ 192.36.36.110: 8080

กำหนดค่าพร็อกซีการกำหนดค่า npm http: //: @ 192.36.36.110: 8080


0

CNTLM ไม่ได้ผลสำหรับฉัน ฉันลองชุดค่าผสมที่เป็นไปได้ทั้งหมด NPM กำลังให้ข้อผิดพลาดการตรวจสอบสิทธิ์ พู้ทำเล่นมาเพื่อช่วยเหลือและช่วยชีวิตฉัน ติดตั้งและกำหนดค่าได้ง่าย ตั้งค่า Fiddler Rule เป็น Authenticated อัตโนมัติใน. 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

มันใช้งานได้สำหรับฉัน :)


0

สิ่งที่ทำงานให้ฉันได้เป็นดังนี้:

registry=http://registry.npmjs.org
proxy=http://<url.pac>
https-proxy=http://<url.pac>
http-proxy=http://<url.pac>
strict-ssl=false

ฉันไม่จำเป็นต้องใส่ชื่อผู้ใช้หรือรหัสผ่านเพียงแค่ไฟล์ PAC

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.