Есть ли способ заставить npm install (команду) работать за прокси? - PullRequest
236 голосов
/ 26 сентября 2011

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

Ответы [ 27 ]

306 голосов
/ 30 октября 2012

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

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

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

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

    npm --proxy http://username:password@cacheaddress.com.br:80 install packagename
    

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

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

EDIT2: Как прокомментировал @BStruthers, имейте в виду, что пароли, содержащие "@", не будут анализироваться правильно, если в нем содержится @, заключите весь пароль в кавычки

278 голосов
/ 24 апреля 2012

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

95 голосов
/ 21 августа 2013

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

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 обновлен!

  1. Просто вставьте следующий кодвнизу вашего ~/.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
    
  2. Затем отредактируйте поля «username», «password» и «proxy» в вставленном вами коде.

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

  4. Проверьте свои настройки, запустив npm config list и cat ~/.npmrc

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

    • npm install __, или
    • npm --without-ssl --insecure install __, или
    • , переопределите настройки прокси-сервера с помощью npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install __.
    • Если вы хотите, чтобы модуль был доступен по всему миру, добавьте опцию -g
31 голосов
/ 27 сентября 2011

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

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

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

20 голосов
/ 26 июня 2017

Хотя уже есть много полезных советов, для моей среды (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

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

15 голосов
/ 13 июля 2015

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

14 голосов
/ 24 декабря 2015

Это работает для меня в 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 используется для символа \.

8 голосов
/ 11 ноября 2013
$ npm config set proxy http://login:pass@host:port
$ npm config set https-proxy http://login:pass@host:port
8 голосов
/ 04 апреля 2017

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

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080
npm set strict-ssl=false
7 голосов
/ 23 мая 2017

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

proxy=http://<proxy-url>:<port>
https-proxy=https://<proxy-url>:<port>
registry=http://registry.npmjs.org/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...