Ответы:
Я решил эту проблему следующим образом:
Я запускаю эту команду:
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 (например)
РЕДАКТИРОВАТЬ 2: Как прокомментировал @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
Затем отредактируйте поля «username», «password» и «proxy» в вставленном вами коде.
Откройте новый терминал
Проверьте ваши настройки, запустив 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 --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://..
Наконец, мне удалось решить эту проблему, используя прокси-сервер behinde с аутентификацией AD. Я должен был выполнить:
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 установить Cordova-плагины
npm --proxy http://XX.AA.AA.BB:8080 установить
Я перепробовал все эти варианты, но у моего прокси-сервера по какой-то причине его не было. Затем, родившись из отчаяния / отчаяния, я случайно попробовалcurl
в своей оболочке Git Bash, и это сработало.
Отключение всех параметров прокси с помощью
npm config rm proxy
npm config rm https-proxy
И тогда запуск npm install
в моей оболочке Git Bash работал отлично. Я не знаю, как он настроен правильно для прокси, а cmd
приглашение Windows - нет, но это сработало.
npm config set proxy <http://...>:<port_number>
npm config set registry http://registry.npmjs.org/
Это решило мою проблему.
Наконец, после привязки разных ответов, первые четыре строки @Kayvar answers помогают мне решить проблему:
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 прокси.
Попробуйте найти .npmrc в C: \ Users \ .npmrc
затем откройте (блокнот), напишите и сохраните внутри:
proxy=http://<username>:<pass>@<proxyhost>:<port>
PS: удалите "<" и ">", пожалуйста!
Для меня, хотя python и т. Д. Все будет работать, хотя наш корпоративный прокси-сервер npm не будет.
Я попытался
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 install. Таким образом, вы не будете устанавливать прокси в .npmrc, но для этого сеанса он будет работать.
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 - ip прокси, а 4128 - порт. изменить в соответствии с настройками прокси. это работает для меня.
Многие приложения (например, npm) могут использовать настройку прокси из переменных среды пользователя.
Вы можете просто добавить в свою среду следующие переменные HTTP_PROXY и HTTPS_PROXY которые будут иметь одинаковое значение для каждой
HTTP: // пользователь: пароль @ ProxyAddress: ProxyPort
Например, если у вас Windows, вы можете добавить прокси следующим образом:
В моем случае я забыл установить «http: //» в моих конфигурационных файлах (их можно найти в 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
Я не знаю логики этого, но это сработало. Если ни один из приведенных выше ответов не работает для вас, возможно, вы можете попробовать этот способ. Надеюсь, что это полезно.
На странице curl есть хорошая информация о проблемах с SSL и сертификатами . Я основываю большую часть своего ответа на информации там.
Использование strict-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
Уф! Мы сделали это! Теперь npm может понять, как подключиться. Бонус в том, что вы можете указать curl использовать тот же cabundle.pem, и он также будет понимать HTTP.
Вот шаги, которые я выполнил (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), я забыл экранировать специальные символы для домена \ user (% 5C) в кодированном URL-адресе и пароль, имеющий знак вопроса '?' (% 3F). То есть, получив кодированную команду, не забывайте экранировать «%» в команде bat-файла.
Я изменился
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
.
Это сработало для меня, надеюсь, это сработает для вас :)