Есть ли способ сделать npm install (команда) работать за прокси?

Читайте про прокси-переменную в файле .npmrc, но она не работает. Попытка избежать ручной загрузки всех требуемых пакетов и установки.

Ответ 1

Я решил эту проблему следующим образом:

  1. Я запускаю эту команду:

    npm config set strict-ssl false
    
  2. Затем установите npm для работы с http вместо https:

    npm config set registry "http://registry.npmjs.org/"
    
  3. Затем я устанавливаю пакеты, используя этот синтаксис:

    npm --proxy http://username:[email protected]:80 install packagename
    

Пропустите часть username:password, если прокси-сервер не требует от вас аутентификации

ОБНОВЛЕНИЕ: мой друг только что отметил, что вы можете заставить NPM работать за прокси-сервером, установив ОБА HTTP_PROXY и HTTPS_PROXY переменные окружения, затем выполнив обычно команду npm install express (для пример)

ОБНОВЛЕНИЕ 2: Как прокомментировал @BStruthers, имейте в виду, что пароли, содержащие "@", не будут анализироваться правильно, если в нем содержится @, то весь пароль следует заключать в кавычки

Ответ 2

Настройте прокси-сервер 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.

Ответ 3

Если вы сомневаетесь, попробуйте все эти команды, как я:

npm config set registry http://registry.npmjs.org/
npm config set proxy http://myusername:[email protected]:8080
npm config set https-proxy http://myusername:[email protected]:8080
npm config set strict-ssl false
set HTTPS_PROXY=http://myusername:[email protected]:8080
set HTTP_PROXY=http://myusername:[email protected]:8080
export HTTPS_PROXY=http://myusername:[email protected]:8080
export HTTP_PROXY=http://myusername:[email protected]:8080
export http_proxy=http://myusername:[email protected]:8080

npm --proxy http://myusername:[email protected]:8080 \
--without-ssl --insecure -g install

=======

UPDATE

Поместите свои настройки в ~/.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:[email protected]$proxy"
    export HTTP_PROXY="http://$username:[email protected]$proxy"
    export http_proxy="http://$username:[email protected]$proxy"
    export https_proxy="http://$username:[email protected]$proxy"
    export all_proxy="http://$username:[email protected]$proxy"
    export ftp_proxy="http://$username:[email protected]$proxy"
    export dns_proxy="http://$username:[email protected]$proxy"
    export rsync_proxy="http://$username:[email protected]$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:[email protected]$proxy"
    npm config set https-proxy "http://$username:[email protected]$proxy"
    npm config set strict-ssl false
    echo "registry=http://registry.npmjs.org/" > ~/.npmrc
    echo "proxy=http://$username:[email protected]$proxy" >> ~/.npmrc
    echo "strict-ssl=false" >> ~/.npmrc
    echo "http-proxy=http://$username:[email protected]$proxy" >> ~/.npmrc
    echo "http_proxy=http://$username:[email protected]$proxy" >> ~/.npmrc
    echo "https_proxy=http://$username:[email protected]$proxy" >> ~/.npmrc
    echo "https-proxy=http://$username:[email protected]$proxy" >> ~/.npmrc
    
    ######################
    # WGET SETTINGS
    # (Bonus Settings! Not required for npm to work, but needed for lots of other programs)
    ######################
    echo "https_proxy = http://$username:[email protected]$proxy/" > ~/.wgetrc
    echo "http_proxy = http://$username:[email protected]$proxy/" >> ~/.wgetrc
    echo "ftp_proxy = http://$username:[email protected]$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:[email protected]$proxy" > ~/.curlrc
    
  • Затем отредактируйте поля "имя пользователя", "пароль" и "прокси" в вставленном вами коде.

  • Откройте новый терминал

  • Проверьте настройки, выполнив npm config list и cat ~/.npmrc

  • Попробуйте установить модуль с помощью

    • npm install __, или
    • npm --without-ssl --insecure install __, или
    • переопределите настройки прокси-сервера, используя npm --without-ssl --insecure --proxy http://username:[email protected]:8080 install __.
    • Если вы хотите, чтобы модуль был доступен по всему миру, добавьте опцию -g

Ответ 4

Вы пробовали параметры командной строки вместо файла .npmrc?

Я думаю, что что-то вроде npm --proxy http://proxy-server:8080/ install {package-name} работало для меня.

Я также видел следующее: npm config set proxy http://proxy-server:8080/

Ответ 5

Хотя уже есть много полезных советов, для моей среды (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:[email protected]:port
npm config set https-proxy http://username:[email protected]:port
npm config set proxy http://username:[email protected]:port
npm set strict-ssl false

Надеюсь, это сэкономит время кому-то

Ответ 6

Для настройки 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

Ответ 7

Это работает для меня в Windows:

npm config set proxy http://domain%5Cuser:[email protected]:port

Если вы не находитесь в каком-либо домене, используйте:

npm config set proxy http://user:[email protected]:port

Если ваш пароль содержит специальные символы, такие как ", @, : и т.д., замените их на их кодированные URL. Например "%22, @%40, :%3A. %5C используется для символа \.

Ответ 9

Это сработало для меня -

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080
npm set strict-ssl=false

Ответ 10

vim ~/.npmrc на вашем компьютере Linux и добавьте следующее. Не забывайте добавлять часть registry, поскольку это приводит к сбою во многих случаях.

proxy=http://<proxy-url>:<port>
https-proxy=https://<proxy-url>:<port>
registry=http://registry.npmjs.org/

Ответ 11

Наконец, мне удалось решить эту проблему, используя прокси-сервер behinde с аутентификацией AD. Я должен был выполнить:

npm config set proxy http://domain%5Cuser:[email protected]:port/
npm config set https-proxy http://domain%5Cuser:[email protected]:port/

Очень важно, чтобы URL кодировал любые специальные символы, такие как backshlash или # В моем случае мне пришлось кодировать

  1. backshlash с% 5C, поэтому domain\user will будет domain%5Cuser
  2. # подпишите %23%0A, поэтому пароль, например Password#2, будет Password%23%0A2

Я также добавил следующие настройки:

npm config set strict-ssl false
npm config set registry http://registry.npmjs.org/

Ответ 12

Хотя я установил прокси с конфигурацией, проблема не была решена, но после Это работало для меня:

npm --https-proxy http://XX.AA.AA.BB:8080 установить кордова-плагины

npm --proxy http://XX.AA.AA.BB:8080 установить

Ответ 13

Я пробовал все эти параметры, но у моего прокси-сервера не было никого из них по какой-то причине. Затем, рожденный из отчаяния/отчаяния, я случайно попытался curl в моей оболочке Git Bash, и он сработал.

Сброс всех параметров прокси с помощью

npm config rm proxy
npm config rm https-proxy

А затем запуск npm install в моей оболочке Git Bash работал отлично. Я не знаю, как правильно настроить прокси и приглашение Windows cmd, но это сработало.

Ответ 14

npm config set proxy <http://...>:<port_number>
npm config set registry http://registry.npmjs.org/

Это решило мою проблему.

Ответ 15

После того, как окончательно набрали разные ответы, @Kayvar отвечает на первые четыре строки, помогите мне решить проблему:

npm config set registry http://registry.npmjs.org/
npm config set proxy http://myusername:[email protected]:8080
npm config set https-proxy http://myusername:[email protected]:8080
npm config set strict-ssl false

Ответ 17

Попробуйте найти .npmrc в C:\Users \.npmrc

затем откройте (блокнот), напишите и сохраните внутри:

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

PS: удалить "<" и " > " пожалуйста!!

Ответ 18

Для меня, даже несмотря на то, что python и т.д. будут работать, хотя наш корпоративный прокси-нпм не будет.

Я пробовал

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 работал

Ответ 19

В системе Windows

Попробуйте удалить параметры прокси и реестра (если они уже установлены) и установить переменные среды в командной строке через

SET HTTP_PROXY=http://username:[email protected]:port
SET HTTPS_PROXY=http://username:[email protected]:port

затем попробуйте запустить npm install. Таким образом вы не будете устанавливать прокси-сервер в .npmrc, но для этого сеанса он будет работать.

Ответ 20

Используйте команду ниже в 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 - порт. измените в соответствии с настройками прокси-сервера. его работы для меня.

Ответ 21

Многие приложения (например, npm) могут использовать настройки прокси-сервера из переменных пользовательской среды.

Вы можете просто добавить в свою среду следующие переменные HTTP_PROXY и HTTPS_PROXY, которые будут иметь одинаковое значение для каждого

http://user:[email protected]:proxyPort

Например, если у вас есть Windows, вы можете добавить прокси-сервер следующим образом:

Как это выглядит в Windows

Ответ 22

На странице curl есть информация о проблемах с SSL и сертификатами. Я основываю большую часть своего ответа на информации там.

Использование strict-ssl false - плохая практика и может создавать проблемы. Вместо этого мы можем добавить сертификат, который вводится сертификатом "человек посередине".

Как решить эту проблему в Windows:

  1. Загрузите сертификаты CA из curl на основе пакета Mozilla CA. Вы также можете использовать скрипт оболочки curl "firefox-db2pem.sh" для преобразования вашей локальной базы данных Firefox.
  2. Перейдите на веб-страницу с помощью https, например /fooobar.com/... в Chrome или Internet Explorer
  3. Нажмите значок замка, нажмите "Просмотреть сертификаты" или "Действительный" в Chrome
  4. .Перейдите к пути сертификации. Верхний сертификат или корневой сертификат - это тот, который мы хотим извлечь. Нажмите на этот сертификат, а затем "просмотреть сертификат"
  5. Нажмите на вторую вкладку "Детали". Нажмите "Копировать в файл". Выберите формат DER и запишите, где вы сохранили файл. Выберите подходящее имя файла, например rootcert.cer
  6. Если у вас установлен Git, у вас будет openssl.exe. В противном случае установите git для windows на этом этапе. Скорее всего, исполняемый файл openssl будет находиться в C:\Program Files\git\usr\bin\openssl.exe. Мы будем использовать openssl для преобразования файла в формат PEM, необходимый для понимания NPM.
  7. Преобразуйте файл, сохраненный на шаге 5, с помощью этой команды:
    openssl x509 -inform DES -in **rootcert**.cer -out outcert.pem -text
    где rootcert - имя файла сертификата, сохраненного на шаге 5.
  8. Откройте outcert.pem в текстовом редакторе, достаточно умном, чтобы понимать окончания строк, поэтому не блокнот. Выделите весь текст и скопируйте его в буфер обмена.
  9. Теперь мы вставим это содержимое в конец пакета CA Cert, созданного на шаге 1. Так что откройте cacert.pem в вашем расширенном текстовом редакторе. Перейти к концу файла и вставить содержимое из предыдущего шага в конец файла. (Сохраните пустую строку под тем, что вы только что вставили)
  10. Скопируйте сохраненный файл cabundle.pem в подходящее место. Например, ваш% userprofile% или ~. Запишите местоположение файла.
  11. Теперь мы скажем npm/yarn использовать новый пакет. В командной строке напишите
    npm config set cafile **C:\Users\username\cacert.pem
    где C:\Users\username\cacert.pem - это путь из шага 10.
  12. По желанию: включите Strong-SSL снова, npm config set strict-ssl true

Уф! Мы сделали это! Теперь npm может понять, как подключиться. Бонус в том, что вы можете указать curl использовать тот же cabundle.pem, и он также будет понимать HTTP.

Ответ 23

В моем случае я забыл установить "http://" в моих конфигурационных файлах (можно найти в адресах прокси-сервера C:\Users\[USERNAME] \.npmrc). Поэтому вместо

proxy=http://[IPADDRESS]:[PORTNUMBER]
https-proxy=http://[IPADDRESS]:[PORTNUMBER]

У меня был

proxy=[IPADDRESS]:[PORTNUMBER]
https-proxy=[IPADDRESS]:[PORTNUMBER]

Что, конечно, не сработало, но сообщения об ошибках тоже не помогли...

Ответ 24

На этот вопрос было много ответов, но никто из них не работал у меня. Все они упомянули, чтобы добавить префикс 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

Я не знаю логики этого, но это сработало. Если ни один из приведенных выше ответов не работает для вас, возможно, вы можете попробовать это. Надеюсь, что это полезно.

Ответ 25

Вот шаги, которые я выполнил (Windows):

  1. Отредактируйте следующий файл C:\Users\<WIN_USERNAME>\.npmrc
  2. Экспортируйте сертификат в свою файловую систему со следующего адреса:https://registry.npmjs.org

  3. Перейдите в расположение экспортированного сертификата и введите следующую команду:

    npm config set cafile npm_certificate.cer

  4. Добавьте следующие изменения в файл: registry=https://registry.npmjs.org/ strict-ssl=false https-proxy=http://[proxy_user]:[proxy_password]@[proxy_ip]:[proxy_port]/ cafile=npm_certificate.cer

Теперь вы должны быть готовы к работе!

Ответ 26

Моя проблема сводилась к глупой ошибке с моей стороны. Поскольку однажды я быстро сбросил свои прокси-серверы в файл *.bat * (http_proxy, https_proxy и ftp_proxy), я забыл избежать специальных символов для url-encoded domain\user (% 5C) и пароля с вопросительным знаком '?' (% 3F). То есть, как только у вас есть закодированная команда, не забудьте избежать "%" в команде bat bat.

Я изменил

set http_proxy=http://domain%5Cuser:password%[email protected]:8080

к

set http_proxy=http://domain%%5Cuser:password%%[email protected]:8080

Возможно, это краевой случай, но, надеюсь, он кому-то помогает.

Ответ 27

когда я даю без префикса http/http в настройках прокси-сервера npm, даже если хост и порт прокси-сервера были правильными значениями. Он работал только после добавления префикса протокола.

Ответ 28

Просто откройте новый терминал и введите npm config edit и npm config -g edit. Сброс к значениям по умолчанию. После этого закройте терминал, откройте новый и введите npm --without-ssl --insecure --proxy http://username:[email protected]:8080 install <package>, если вам нужно глобально, просто добавьте -g.

Это сработало для меня, надеюсь, это сработает для вас :)