Jawaban:
Saya memecahkan masalah ini dengan cara ini:
Saya menjalankan perintah ini:
npm config set strict-ssl false
Kemudian atur npm untuk dijalankan dengan http, bukan https:
npm config set registry "http://registry.npmjs.org/"
Kemudian saya menginstal paket menggunakan sintaks ini:
npm --proxy http://username:password@cacheaddress.com.br:80 install packagename
Lewati username:password
bagian ini jika proxy tidak mengharuskan Anda untuk mengautentikasi
EDIT: Seorang teman saya baru saja menunjukkan bahwa Anda mungkin mendapatkan NPM untuk bekerja di belakang proxy dengan mengatur KEDUA HTTP_PROXY dan variabel lingkungan HTTPS_PROXY, kemudian biasanya mengeluarkan perintah npm install express (misalnya)
EDIT2: Seperti komentar @BStruthers, perlu diingat bahwa kata sandi yang mengandung "@" tidak akan diuraikan dengan benar, jika mengandung @ cantumkan seluruh kata sandi dalam tanda kutip
my@password
, file .npmrc Anda seharusnya my%40password
untuk bagian kata sandi. Menempatkannya dalam tanda kutip bekerja dalam beberapa kasus, tetapi menyandikannya sangat mudah.
Setup npm
proxy
Untuk HTTP
:
npm config set proxy http://proxy_host:port
Untuk HTTPS
:
gunakan alamat proxy https jika ada
npm config set https-proxy https://proxy.company.com:8080
lain menggunakan kembali alamat proxy http
npm config set https-proxy http://proxy.company.com:8080
Catatan : https-proxy tidak memiliki https
protokol, tetapi http
.
Jika ragu, coba semua perintah ini, seperti yang saya lakukan:
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
=======
Masukkan pengaturan Anda ke dalam ~/.bashrc
atau ~/.bash_profile
jadi Anda tidak perlu khawatir tentang pengaturan Anda setiap kali Anda membuka jendela terminal baru!
Jika perusahaan Anda seperti milik saya, saya harus sering mengganti kata sandi. Jadi saya menambahkan yang berikut ke ~ / .bashrc atau ~ / .bash_profile sehingga setiap kali saya membuka terminal, saya tahu npm saya mutakhir!
Cukup tempel kode berikut di bagian bawah ~/.bashrc
file Anda :
######################
# 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
Kemudian edit bidang "nama pengguna", "kata sandi", dan "proxy" dalam kode yang Anda tempel.
Buka terminal baru
Periksa pengaturan Anda dengan menjalankan npm config list
dancat ~/.npmrc
Coba instal modul Anda menggunakan
npm install __
, atau npm --without-ssl --insecure install __
, atau 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
untuk config NPM dan kemudian diinstal paket NPM menggunakan npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 --without-ssl --insecure -g install {packagename}
. Terima kasih
Sudahkah Anda mencoba opsi baris perintah alih-alih .npmrc
file?
Saya pikir sesuatu seperti npm --proxy http://proxy-server:8080/ install {package-name}
bekerja untuk saya.
Saya juga melihat yang berikut ini:
npm config set proxy http://proxy-server:8080/
Meskipun sudah ada banyak saran yang baik, untuk lingkungan saya (Windows 7, menggunakan PowerShell) dan versi terakhir yang tersedia dari node.js (v8.1.2) semua di atas tidak berfungsi, kecuali ketika saya mengikuti pengaturan brunowego .
Jadi, periksa pengaturan Anda dengan:
npm config list
Pengaturan di belakang proxy:
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
Semoga ini akan menghemat waktu untuk seseorang
Ini berfungsi untuk saya di Windows:
npm config set proxy http://domain%5Cuser:pass@host:port
Jika Anda tidak berada dalam domain apa pun, gunakan:
npm config set proxy http://user:pass@host:port
Jika password Anda mengandung karakter khusus seperti "
, @
, :
dan sebagainya, menggantinya dengan URL dikodekan nilai-nilai mereka. Misalnya "
-> %22
, @
-> %40
, :
-> %3A
. %5C
digunakan untuk karakter \
.
encodeURIComponent("YourP@ssword")
untuk mendapatkan versi sandi Anda yang disandikan.
$ npm config set proxy http://login:pass@host:port
$ npm config set https-proxy http://login:pass@host:port
Ini bekerja untuk saya
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
di mesin Linux Anda dan tambahkan berikut ini. Jangan lupa untuk menambahkan registry
bagian karena ini menyebabkan kegagalan dalam banyak kasus.
proxy=http://<proxy-url>:<port>
https-proxy=https://<proxy-url>:<port>
registry=http://registry.npmjs.org/
https-proxy=https://..
kehttps-proxy=http://..
Akhirnya saya berhasil menyelesaikan masalah ini di belakang proxy dengan otentikasi AD. Saya harus mengeksekusi:
npm config set proxy http://domain%5Cuser:password@proxy:port/
npm config set https-proxy http://domain%5Cuser:password@proxy:port/
Sangat penting untuk menyandikan URL karakter chars khusus seperti backshlash atau # Dalam kasus saya, saya harus menyandikan
backshlash
dengan% 5C sehingga domain\user will
menjadidomain%5Cuser
#
masuk dengan %23%0A
begitu kata sandi seperti Password#2
akanPassword%23%0A2
Saya juga menambahkan pengaturan berikut:
npm config set strict-ssl false
npm config set registry http://registry.npmjs.org/
Meskipun saya menetapkan proxy dengan config, masalah tidak terpecahkan tetapi setelah yang satu ini bekerja untuk saya:
npm --https-proxy http://XX.AA.AA.BB:8080 pasang cordova-plugins
npm --proxy http://XX.AA.AA.BB:8080 instal
Saya mencoba semua opsi ini, tetapi proxy saya tidak memilikinya karena suatu alasan. Kemudian, lahir dari kehancuran / keputusasaan, saya mencoba secara acakcurl
di shell Git Bash saya, dan ternyata berhasil.
Membatalkan pengaturan semua opsi proxy
npm config rm proxy
npm config rm https-proxy
Dan kemudian berjalan npm install
di shell Git Bash saya bekerja dengan sempurna. Saya tidak tahu bagaimana ini diatur dengan benar untuk proksi dan Windows cmd
prompt tidak, tetapi berhasil.
npm config set proxy <http://...>:<port_number>
npm config set registry http://registry.npmjs.org/
Ini menyelesaikan masalah saya.
Setelah akhirnya mengikat jawaban yang berbeda, empat baris pertama @Kayvar jawaban membantu saya untuk menyelesaikan masalah:
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
Ini berhasil untuk saya. Tetapkan proxy http dan https.
Cobalah untuk menemukan .npmrc di C: \ Users \ .npmrc
kemudian buka (notepad), tulis, dan simpan di dalam:
proxy=http://<username>:<pass>@<proxyhost>:<port>
PS: hapus "<" dan ">" tolong !!
Bagi saya meskipun python dll semua akan bekerja meskipun npm proxy perusahaan kami tidak akan.
Saya mencoba
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/
seperti yang diinstruksikan tetapi terus mendapatkan kesalahan yang sama.
Hanya ketika saya dihapus
https-proxy https://proxyccc.xxx.ca:8080
dari file .npmrc yang menginstal npm electron --save-dev bekerja
https-proxy
mungkin tidak https:
. Setidaknya, memiliki port yang sama untuk masing-masing mungkin tidak benar, tetapi saya pikir mereka berdua mungkin memiliki nilai yang sama.
Di sistem Windows
Coba hapus pengaturan proxy dan registri (jika sudah disetel) dan setel variabel lingkungan pada baris perintah via
SET HTTP_PROXY=http://username:password@domain:port
SET HTTPS_PROXY=http://username:password@domain:port
kemudian coba jalankan npm install. Dengan ini, Anda tidak akan mengatur proxy di .npmrc tetapi untuk sesi itu akan berfungsi.
SET HTTP_PROXY http://username:password@domain:port
tetapi beralih ke SET HTTP_PROXY=http://username:password@domain:port
tampaknya membuat semuanya berfungsi
Gunakan perintah di bawah ini di cmd atau GIT Bash atau prompt lainnya
config set proxy $ npm " http://192.168.1.101:4128 "
$ npm config set https-proxy " http://192.168.1.101:4128 "
di mana 192.168.1.101 adalah proxy ip dan 4128 adalah port. ubah sesuai dengan pengaturan proxy Anda. ini bekerja untuk saya.
Banyak aplikasi (misalnya npm) dapat menggunakan pengaturan proxy dari variabel lingkungan pengguna.
Anda bisa menambahkan ke lingkungan Anda mengikuti variabel HTTP_PROXY dan HTTPS_PROXY yang akan memiliki nilai yang sama untuk masing-masing variabel
http: // pengguna: kata sandi @ proxyAddress: proxyPort
Misalnya, jika Anda memiliki Windows, Anda dapat menambahkan proxy sebagai berikut:
Dalam kasus saya, saya lupa mengatur "http: //" di file konfigurasi saya (dapat ditemukan di C: \ Users \ [USERNAME] \ .npmrc) alamat proxy. Jadi, bukannya memiliki
proxy=http://[IPADDRESS]:[PORTNUMBER]
https-proxy=http://[IPADDRESS]:[PORTNUMBER]
Saya punya
proxy=[IPADDRESS]:[PORTNUMBER]
https-proxy=[IPADDRESS]:[PORTNUMBER]
Yang tentu saja tidak berhasil, tetapi pesan kesalahan tidak banyak membantu ...
Ada banyak jawaban di atas untuk pertanyaan ini, tetapi tidak ada yang bekerja untuk saya. Semuanya disebutkan untuk ditambahkanhttp://
awalan. Jadi saya menambahkannya juga. Semua gagal.
Akhirnya berhasil setelah saya tidak sengaja menghapus http://
awalan. Konfigurasi akhir seperti ini:
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
Saya tidak tahu logika di balik ini, tetapi itu berhasil. Jika tidak ada jawaban di atas yang berfungsi untuk Anda, mungkin Anda dapat mencoba cara ini. Semoga yang ini bermanfaat.
Ada informasi bagus di halaman curl tentang masalah SSL dan sertifikat . Saya mendasarkan sebagian besar jawaban saya pada informasi di sana.
Menggunakan strict-ssl false adalah praktik buruk dan dapat membuat masalah. Yang bisa kami lakukan adalah menambahkan sertifikat yang disuntikkan, oleh sertifikat "man in the middle".
Cara mengatasi ini di 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
Fiuh! Kita berhasil! Sekarang npm dapat mengerti cara menghubungkan. Bonusnya adalah Anda dapat memberi tahu curl untuk menggunakan cabundle.pem yang sama dan ia juga akan memahami HTTPs.
Berikut langkah-langkah yang saya ikuti (Windows):
C:\Users\<WIN_USERNAME>\.npmrc
Ekspor sertifikat ke sistem file Anda dari alamat berikut: https://registry.npmjs.org
Arahkan ke lokasi sertifikat yang diekspor dan keluarkan perintah berikut:
npm config set cafile npm_certificate.cer
Tambahkan perubahan berikut ke file:
registry=https://registry.npmjs.org/
strict-ssl=false
https-proxy=http://[proxy_user]:[proxy_password]@[proxy_ip]:[proxy_port]/
cafile=npm_certificate.cer
Sekarang Anda harus siap untuk pergi!
Masalah saya menjadi kesalahan konyol di pihak saya. Karena suatu hari saya dengan cepat menjatuhkan proksi saya ke file windows * .bat (http_proxy, https_proxy, dan ftp_proxy), saya lupa melarikan diri dari karakter khusus untuk domain \ pengguna urkodekan \ pengguna (% 5C) dan kata sandi memiliki tanda tanya ' (% 3F). Artinya, setelah Anda memiliki perintah yang disandikan, jangan lupa untuk melarikan diri dari '%' dalam perintah file bat.
aku berubah
set http_proxy=http://domain%5Cuser:password%3F@myproxy:8080
untuk
set http_proxy=http://domain%%5Cuser:password%%3F@myproxy:8080
Mungkin ini kasus tepi tetapi mudah-mudahan ini membantu seseorang.
ketika saya memberi tanpa awalan http / http dalam pengaturan proxy npm gagal bahkan ketika host proxy dan port adalah nilai yang benar. Ini bekerja hanya setelah menambahkan awalan protokol.
Cukup buka terminal baru dan ketik npm config edit
dan npm config -g edit
. Setel ulang ke default. Setelah terminal tutup itu, buka yang baru dan ketik npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install <package>
jika Anda perlu menambahkan secara global -g
.
Ini bekerja untuk saya, semoga ini akan berhasil untuk Anda :)