อ่านเกี่ยวกับตัวแปรพร็อกซีใน.npmrc
ไฟล์ แต่ใช้งานไม่ได้ พยายามหลีกเลี่ยงการดาวน์โหลดด้วยตนเองทั้งหมดต้องใช้แพ็คเกจและติดตั้ง
อ่านเกี่ยวกับตัวแปรพร็อกซีใน.npmrc
ไฟล์ แต่ใช้งานไม่ได้ พยายามหลีกเลี่ยงการดาวน์โหลดด้วยตนเองทั้งหมดต้องใช้แพ็คเกจและติดตั้ง
คำตอบ:
ฉันแก้ไขปัญหานี้ด้วยวิธีนี้:
ฉันรันคำสั่งนี้:
npm config set strict-ssl false
จากนั้นตั้งค่า npm ให้ทำงานด้วย http แทน https:
npm config set registry "http://registry.npmjs.org/"
จากนั้นฉันติดตั้งแพคเกจโดยใช้ไวยากรณ์นี้:
npm --proxy http://username:password@cacheaddress.com.br:80 install packagename
ข้ามusername:password
ส่วนนี้ไปหากพร็อกซีไม่ต้องการให้คุณตรวจสอบสิทธิ์
แก้ไข: เพื่อนของฉันเพิ่งชี้ให้เห็นว่าคุณอาจได้รับ NPM ทำงานหลังพร็อกซีโดยการตั้งค่าตัวแปรสภาพแวดล้อมทั้ง HTTP_PROXY และ HTTPS_PROXY จากนั้นออกคำสั่ง npm install express (ตัวอย่าง)
EDIT2: ตามที่ @BStruthers แสดงความคิดเห็นโปรดทราบว่ารหัสผ่านที่มี "@" จะไม่ถูกวิเคราะห์อย่างถูกต้องหากมี @ ให้ใส่รหัสผ่านทั้งหมดในเครื่องหมายคำพูด
my@password
ไฟล์. npmrc ของคุณควรมีmy%40password
ส่วนของรหัสผ่าน การใส่ไว้ในเครื่องหมายคำพูดใช้งานได้ในบางกรณี แต่การเข้ารหัสนั้นไม่สามารถป้องกันได้
ตั้งค่าnpm
พร็อกซี
สำหรับHTTP
:
npm config set proxy http://proxy_host:port
สำหรับHTTPS
:
ใช้ที่อยู่พร็อกซี https หากมี
npm config set https-proxy https://proxy.company.com:8080
มิฉะนั้นจะใช้ที่อยู่พร็อกซี http อีกครั้ง
npm config set https-proxy http://proxy.company.com:8080
หมายเหตุ : ผู้ https-พร็อกซี่ไม่ได้https
เป็นโปรโตคอล http
แต่
เมื่อมีข้อสงสัยลองคำสั่งทั้งหมดเหล่านี้เช่นฉัน:
npm config set registry http://registry.npmjs.org/
npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set strict-ssl false
set HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
set HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export http_proxy=http://myusername:mypassword@proxy.us.somecompany:8080
npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 \
--without-ssl --insecure -g install
=======
ใส่การตั้งค่าของคุณ~/.bashrc
หรือ~/.bash_profile
ดังนั้นคุณไม่ต้องกังวลเกี่ยวกับการตั้งค่าทุกครั้งที่คุณเปิดหน้าต่างเทอร์มินัลใหม่
หาก บริษัท ของคุณเหมือนของฉันฉันต้องเปลี่ยนรหัสผ่านบ่อยๆ ดังนั้นฉันจึงเพิ่มสิ่งต่อไปนี้ลงใน ~ / .bashrc หรือ ~ / .bash_profile ของฉันดังนั้นทุกครั้งที่ฉันเปิดเทอร์มินัลฉันรู้ว่า npm ของฉันทันสมัยแล้ว!
เพียงวางรหัสต่อไปนี้ที่ด้านล่างของ~/.bashrc
ไฟล์ของคุณ:
######################
# User Variables (Edit These!)
######################
username="myusername"
password="mypassword"
proxy="mycompany:8080"
######################
# Environement Variables
# (npm does use these variables, and they are vital to lots of applications)
######################
export HTTPS_PROXY="http://$username:$password@$proxy"
export HTTP_PROXY="http://$username:$password@$proxy"
export http_proxy="http://$username:$password@$proxy"
export https_proxy="http://$username:$password@$proxy"
export all_proxy="http://$username:$password@$proxy"
export ftp_proxy="http://$username:$password@$proxy"
export dns_proxy="http://$username:$password@$proxy"
export rsync_proxy="http://$username:$password@$proxy"
export no_proxy="127.0.0.10/8, localhost, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16"
######################
# npm Settings
######################
npm config set registry http://registry.npmjs.org/
npm config set proxy "http://$username:$password@$proxy"
npm config set https-proxy "http://$username:$password@$proxy"
npm config set strict-ssl false
echo "registry=http://registry.npmjs.org/" > ~/.npmrc
echo "proxy=http://$username:$password@$proxy" >> ~/.npmrc
echo "strict-ssl=false" >> ~/.npmrc
echo "http-proxy=http://$username:$password@$proxy" >> ~/.npmrc
echo "http_proxy=http://$username:$password@$proxy" >> ~/.npmrc
echo "https_proxy=http://$username:$password@$proxy" >> ~/.npmrc
echo "https-proxy=http://$username:$password@$proxy" >> ~/.npmrc
######################
# WGET SETTINGS
# (Bonus Settings! Not required for npm to work, but needed for lots of other programs)
######################
echo "https_proxy = http://$username:$password@$proxy/" > ~/.wgetrc
echo "http_proxy = http://$username:$password@$proxy/" >> ~/.wgetrc
echo "ftp_proxy = http://$username:$password@$proxy/" >> ~/.wgetrc
echo "use_proxy = on" >> ~/.wgetrc
######################
# CURL SETTINGS
# (Bonus Settings! Not required for npm to work, but needed for lots of other programs)
######################
echo "proxy=http://$username:$password@$proxy" > ~/.curlrc
จากนั้นแก้ไขฟิลด์ "ชื่อผู้ใช้", "รหัสผ่าน" และ "พร็อกซี" ในรหัสที่คุณวาง
เปิดเทอร์มินัลใหม่
ตรวจสอบการตั้งค่าของคุณโดยเรียกใช้npm config list
และcat ~/.npmrc
ลองติดตั้งโมดูลของคุณโดยใช้
npm install __
, หรือ npm --without-ssl --insecure install __
, หรือ npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install __
แทนที่การตั้งค่าพร็อกซีของคุณโดยใช้-g
npm config set registry http://registry.npmjs.org/
, npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080
, npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080
, npm config set strict-ssl false
สำหรับ NPM การกำหนดค่าและติดตั้งแล้วแพคเกจ NPM npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 --without-ssl --insecure -g install {packagename}
ใช้ ขอบคุณ
คุณลองตัวเลือกบรรทัดคำสั่งแทน.npmrc
ไฟล์แล้วหรือยัง
ฉันคิดว่าสิ่งที่ชอบnpm --proxy http://proxy-server:8080/ install {package-name}
สำหรับฉัน
ฉันได้เห็นสิ่งต่อไปนี้ด้วย:
npm config set proxy http://proxy-server:8080/
แม้ว่าจะมีคำแนะนำที่ดีอยู่แล้ว แต่สำหรับสภาพแวดล้อมของฉัน (Windows 7 โดยใช้ PowerShell) และรุ่นล่าสุดที่มีอยู่ของ node.js (v8.1.2) ทั้งหมดข้างต้นไม่ได้ทำงานยกเว้นเมื่อฉันทำตามการตั้งค่าbrunowego
ดังนั้นตรวจสอบการตั้งค่าของคุณด้วย:
npm config list
การตั้งค่าหลังพร็อกซี:
npm config set registry http://registry.npmjs.org/
npm config set http-proxy http://username:password@ip:port
npm config set https-proxy http://username:password@ip:port
npm config set proxy http://username:password@ip:port
npm set strict-ssl false
หวังว่านี่จะช่วยประหยัดเวลากับใครบางคน
สิ่งนี้ใช้ได้กับฉันใน Windows:
npm config set proxy http://domain%5Cuser:pass@host:port
หากคุณไม่ได้อยู่ในโดเมนใด ๆ ให้ใช้:
npm config set proxy http://user:pass@host:port
ถ้ารหัสผ่านของคุณมีอักขระพิเศษเช่น"
, @
, :
และอื่น ๆ แทนที่พวกเขาด้วยค่าเข้ารหัส URL ของพวกเขา ยกตัวอย่างเช่น"
-> %22
, @
-> %40
, ->:
จะใช้สำหรับตัวละคร%3A
%5C
\
encodeURIComponent("YourP@ssword")
เพื่อรับรหัสที่เข้ารหัสของคุณ
หากต้องการตั้งค่าพร็อกซี http ให้ตั้งค่าสถานะ-g :
sudo npm config set proxy http://proxy_host:port -g
สำหรับพร็อกซี https ให้ตรวจสอบให้แน่ใจว่าตั้งค่าสถานะ-g แล้ว :
sudo npm config set https-proxy http://proxy_host:port -g
$ npm config set proxy http://login:pass@host:port
$ npm config set https-proxy http://login:pass@host:port
สิ่งนี้ใช้ได้กับฉัน -
npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080
npm set strict-ssl=false
vim ~/.npmrc
ในเครื่อง Linux ของคุณและเพิ่มการติดตาม อย่าลืมเพิ่มregistry
ส่วนหนึ่งเนื่องจากความล้มเหลวในหลายกรณี
proxy=http://<proxy-url>:<port>
https-proxy=https://<proxy-url>:<port>
registry=http://registry.npmjs.org/
https-proxy=https://..
เป็นhttps-proxy=http://..
ในที่สุดฉันก็มีการจัดการเพื่อแก้ปัญหานี้อยู่เบื้องหลังพร็อกซีที่มีการตรวจสอบโฆษณา ฉันต้องดำเนินการ:
npm config set proxy http://domain%5Cuser:password@proxy:port/
npm config set https-proxy http://domain%5Cuser:password@proxy:port/
มันสำคัญมากที่จะต้องเข้ารหัส URL ตัวอักษรพิเศษใด ๆ เช่น backshlash หรือ # ในกรณีของฉันฉันต้องเข้ารหัส
backshlash
ด้วย% 5C เพื่อให้domain\user will
เป็นdomain%5Cuser
#
ลงชื่อเข้าใช้ด้วย%23%0A
รหัสผ่านเช่นนั้นPassword#2
นั้นจะเป็นPassword%23%0A2
ฉันได้เพิ่มการตั้งค่าต่อไปนี้ด้วย:
npm config set strict-ssl false
npm config set registry http://registry.npmjs.org/
แม้ว่าฉันจะตั้งค่าพร็อกซีที่มีการตั้งค่าปัญหาก็ไม่ได้รับการแก้ไข แต่หลังจากที่หนึ่งนี้ทำงานให้ฉัน:
npm --https-proxy http://XX.AA.AA.BB:8080ติดตั้ง -plugins
npm --proxy http://XX.AA.AA.BB:8080ติดตั้ง
ฉันลองใช้ตัวเลือกทั้งหมดเหล่านี้แล้ว แต่พร็อกซีของฉันไม่มีปัญหาใด ๆ จากนั้นเกิดมาจากความสิ้นหวัง / ความสิ้นหวังฉันได้ลองcurl
ในเปลือก Git Bash ของฉันและมันก็ใช้ได้
การยกเลิกการตั้งค่าตัวเลือกพร็อกซีทั้งหมดโดยใช้
npm config rm proxy
npm config rm https-proxy
และจากนั้นทำงานnpm install
ในเชลล์ Git Bash ของฉันทำงานได้อย่างสมบูรณ์ ฉันไม่ทราบวิธีการตั้งค่าอย่างถูกต้องสำหรับพร็อกซีและ Windows cmd
พรอมต์ไม่ได้ แต่มันทำงานได้
npm config set proxy <http://...>:<port_number>
npm config set registry http://registry.npmjs.org/
นี่เป็นการแก้ไขปัญหาของฉัน
หลังจากคาดเดาคำตอบที่แตกต่างกันในที่สุดสี่บรรทัดแรกของ @Kayvar ช่วยฉันแก้ปัญหา
npm config set registry http://registry.npmjs.org/
npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set strict-ssl false
สิ่งนี้ใช้ได้สำหรับฉัน ตั้งค่า http และ https proxy
ลองค้นหา. npmrc ใน C: \ Users \ .npmrc
จากนั้นเปิด (แผ่นจดบันทึก) เขียนและบันทึกภายใน:
proxy=http://<username>:<pass>@<proxyhost>:<port>
PS: ลบ "<" และ ">" ได้โปรด !!
สำหรับฉันแม้ว่าหลาม ฯลฯ จะทำงานได้ดีแม้ว่าพร็อกซี Corporate ของเราจะไม่ทำงาน
ฉันเหนื่อย
npm config set proxy http://proxyccc.xxx.ca:8080
npm config set https-proxy https://proxyccc.xxx.ca:8080
npm config set registry http://registry.npmjs.org/
ตามคำแนะนำ แต่ยังคงได้รับข้อผิดพลาดเดียวกัน
มันก็ต่อเมื่อฉันลบออก
https-proxy https://proxyccc.xxx.ca:8080
จากไฟล์. npmrc ที่การติดตั้งอิเล็กตรอน npm --save-dev ทำงาน
https-proxy
https:
อย่างน้อยการมีพอร์ตเดียวกันสำหรับแต่ละพอร์ตอาจไม่ถูกต้อง แต่ฉันคิดว่าทั้งคู่อาจมีค่าเท่ากัน
บนระบบ Windows
ลองลบการตั้งค่าพร็อกซีและรีจิสตรี (ถ้าตั้งค่าไว้แล้ว) และตั้งค่าตัวแปรสภาพแวดล้อมในบรรทัดคำสั่งผ่าน
SET HTTP_PROXY=http://username:password@domain:port
SET HTTPS_PROXY=http://username:password@domain:port
จากนั้นลองเรียกใช้การติดตั้ง npm โดยสิ่งนี้คุณจะไม่ได้ตั้งค่าพร็อกซีเป็น. pmrc แต่สำหรับเซสชันนั้นจะใช้งานได้
SET HTTP_PROXY http://username:password@domain:port
แต่เปลี่ยนไปSET HTTP_PROXY=http://username:password@domain:port
ดูเหมือนว่าจะทำให้ทุกอย่างทำงานได้ดีขึ้น
ใช้คำสั่งด้านล่างที่ cmd หรือ GIT Bash หรือพรอมต์อื่น ๆ
$ 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 เป็น proxy ip และ 4128 เป็นพอร์ต เปลี่ยนตามการตั้งค่าพร็อกซีของคุณ มันเหมาะกับฉัน
แอปพลิเคชั่นจำนวนมาก (เช่น npm) สามารถใช้การตั้งค่าพร็อกซีจากตัวแปรสภาพแวดล้อมของผู้ใช้
คุณสามารถเพิ่มสภาพแวดล้อมของคุณตามตัวแปรHTTP_PROXYและHTTPS_PROXYที่จะมีค่าเท่ากันสำหรับแต่ละคน
http: // ผู้ใช้: รหัสผ่าน @ proxyAddress: proxyPort
ตัวอย่างเช่นหากคุณมี Windows คุณสามารถเพิ่มพรอกซีได้ดังนี้
ในกรณีของฉันฉันลืมตั้ง "http: //" ในไฟล์ config ของฉัน (สามารถพบได้ใน C: \ Users \ [USERNAME] \ .npmrc) ที่อยู่พร็อกซี ดังนั้นแทนที่จะมี
proxy=http://[IPADDRESS]:[PORTNUMBER]
https-proxy=http://[IPADDRESS]:[PORTNUMBER]
ฉันมี
proxy=[IPADDRESS]:[PORTNUMBER]
https-proxy=[IPADDRESS]:[PORTNUMBER]
หลักสูตรใดไม่ทำงาน แต่ข้อความแสดงข้อผิดพลาดไม่ได้ช่วยอะไรมาก ...
มีคำตอบมากมายสำหรับคำถามนี้ แต่ไม่มีคำตอบใดที่เหมาะกับฉัน ทุกคนกล่าวถึงการเพิ่มhttp://
คำนำหน้า ดังนั้นฉันจึงเพิ่มมันเข้าไปด้วย ล้มเหลวทั้งหมด
ในที่สุดก็ใช้งานได้หลังจากที่ฉันลบhttp://
คำนำหน้าโดยไม่ได้ตั้งใจ การกำหนดค่าสุดท้ายเป็นเช่นนี้:
npm config set registry http://registry.npmjs.org/
npm config set http-proxy ip:port
npm config set https-proxy ip:port
npm config set proxy ip:port
npm set strict-ssl false
ฉันไม่รู้ตรรกะเบื้องหลังสิ่งนี้ แต่มันใช้ได้ หากคำตอบข้างต้นไม่เหมาะกับคุณบางทีคุณอาจลองด้วยวิธีนี้ หวังว่าอันนี้มีประโยชน์
มีข้อมูลที่ดีในหน้าขดบนเป็นปัญหา SSL และใบรับรอง ฉันยึดคำตอบส่วนใหญ่ของฉันจากข้อมูลที่นั่น
การใช้เข้มงวด ssl false เป็นการฝึกฝนที่ไม่ดีและสามารถสร้างปัญหา สิ่งที่เราสามารถทำได้คือเพิ่มใบรับรองที่ถูกฉีดโดยใบรับรอง "คนที่อยู่ตรงกลาง"
วิธีแก้ปัญหานี้ใน Windows:
openssl x509 -inform DES -in **rootcert**.cer -out outcert.pem -text
npm config set cafile **C:\Users\username\cacert.pem
npm config set strict-ssl true
วุ้ย เราทำได้! ตอนนี้สามารถเข้าใจการเชื่อมต่อได้แล้ว โบนัสคือคุณสามารถบอกให้ขดใช้ cabundle.pem เดียวกันและจะเข้าใจ HTTPs ด้วย
นี่คือขั้นตอนที่ฉันได้ติดตาม (Windows):
C:\Users\<WIN_USERNAME>\.npmrc
ส่งออกใบรับรองไปยังระบบไฟล์ของคุณจากที่อยู่ต่อไปนี้: https://registry.npmjs.org
นำทางไปยังตำแหน่งใบรับรองที่ส่งออกและออกคำสั่งต่อไปนี้:
npm config set cafile npm_certificate.cer
เพิ่มการเปลี่ยนแปลงต่อไปนี้ในไฟล์:
registry=https://registry.npmjs.org/
strict-ssl=false
https-proxy=http://[proxy_user]:[proxy_password]@[proxy_ip]:[proxy_port]/
cafile=npm_certificate.cer
ตอนนี้คุณควรพร้อมแล้ว!
ปัญหาของฉันลงไปในข้อผิดพลาดโง่ ๆ ในส่วนของฉัน เนื่องจากฉันใช้เวลาหนึ่งวันส่งพรอกซีลงในไฟล์ windows * .bat (http_proxy, https_proxy และ ftp_proxy) ฉันลืมที่จะหลีกเลี่ยงอักขระพิเศษสำหรับโดเมนที่เข้ารหัส URL \ user (% 5C) และรหัสผ่านที่มีเครื่องหมายคำถาม '?' (% 3F) กล่าวคือเมื่อคุณมีคำสั่งเข้ารหัสอย่าลืมที่จะหลีกเลี่ยง '%' ในคำสั่งไฟล์ค้างคาว
ฉันเปลี่ยน
set http_proxy=http://domain%5Cuser:password%3F@myproxy:8080
ถึง
set http_proxy=http://domain%%5Cuser:password%%3F@myproxy:8080
อาจจะเป็นกรณีที่ทันสมัย แต่หวังว่าจะช่วยใครบางคน
เมื่อฉันให้โดยไม่มีคำนำหน้า http / http ในการตั้งค่าพร็อกซี npm ล้มเหลวแม้ในขณะที่โฮสต์พร็อกซีและพอร์ตเป็นค่าที่เหมาะสม มันทำงานได้หลังจากเพิ่มคำนำหน้าโปรโตคอลเท่านั้น
เพียงแค่เปิดอาคารผู้โดยสารแห่งใหม่และพิมพ์และnpm config edit
npm config -g edit
รีเซ็ตเป็นค่าเริ่มต้น หลังจากที่สถานีใกล้ที่เปิดใหม่และพิมพ์ถ้าคุณต้องการทั่วโลกเพียงแค่เพิ่มnpm --without-ssl --insecure --proxy http://username:password@proxy:8080 install <package>
-g
มันใช้งานได้สำหรับฉันหวังว่ามันจะใช้ได้ผลกับคุณ :)