Как установить NPM за прокси-сервером аутентификации в Windows?

133964
Tobias

Мне нужно запустить последнюю версию Node и NPM в Windows. Я установил Node 0.5.8 и загрузил исходники NPM с GitHub. Шаги, которые я выполнил для установки NPM, были перечислены на его сайте GitHub, но у меня проблема с запуском следующей команды:

node cli.js install npm -gf 

но это терпит неудачу со следующим сообщением об ошибке:

Error: connect UNKNOWN at errnoException (net_uv.js:566:11) at Object.afterConnect [as oncomplete] (net_uv.js:557:18)  System Windows_NT 5.1.2600 command "...\\Node\\bin\\node.exe" "...\\npm\\cli.js" "install" "npm" "-gf" cwd ...\npm node -v v0.5.8 npm -v 1.0.94 code UNKNOWN 

Я думаю, что это проблема, потому что мне нужна аутентификация на моем прокси для подключения к Интернету. Но я не нашел способа сказать установщику использовать мои учетные данные для входа в систему. Есть ли возможность предоставить мой IP-адрес прокси-сервера и информацию для входа в систему при установке npm, возможно, с помощью аргументов командной строки?

Я могу предоставить полный журнал (но, похоже, больше нет соответствующей информации), используя pastebin, если это необходимо.

29
Небольшая хитрость, если имя пользователя содержит нотацию домен \ пользователь, замените обратную косую черту с помощью escape-кода http (% 5C) 11 лет назад 6
@layos Спасибо, оооочень много. Если бы это было Reddit, я бы дал тебе золото. Korinna 10 лет назад 0

14 ответов на вопрос

38
Eric Steinborn

set http_proxyработал очень хорошо для меня, но мне приходилось вводить его каждый раз, когда я открывал командную строку. Поэтому мне пришлось объединить несколько ответов, и теперь мой постоянный.

Моя последовательность пошла следующим образом:

  • Идти к C:\Users\YourUserName
  • Создайте файл с именем .npmrc
  • Внутри этого файла введите следующее (если вы находитесь в домене AD):

proxy = http://domain\\username:password@ip:port

  • Или используйте это, если вы НЕ находитесь в домене AD:

proxy = http://username:password@ip:port

  • Сохранить файл
  • Откройте командную строку и попробуйте использовать npm

Другие имели дополнительный успех с помощью следующей дополнительной команды:

strict-ssl = false

* Вы должны иметь возможность использовать IP-адрес или URL-адрес прокси вместо «IP» выше.

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

ура

Заголовок, если ваш пароль содержит "@", npm не сможет правильно проанализировать ваши настройки прокси. Возможный обходной путь - ввести поддельное имя пользователя: пароль в конфигурации npm и использовать локальный прокси-сервер (например, fiddler), чтобы изменить заголовок Proxy-Authorization запроса, чтобы иметь правильное имя пользователя: пароль. Помните, что имя пользователя: пароль, хранящийся в Proxy-Authorization, закодирован в base64. BStruthers 10 лет назад 3
Получил мою работу с: `proxy = http: // ip: port / https-proxy = http: // ip: port / registry = http://registry.npmjs.org/ strict-ssl = false` Luke 10 лет назад 9
не заставил мою работать с именем пользователя: пароль philx_x 8 лет назад 1
Привет, я попытался использовать `domain \\ user: password @ urltoproxy: port`, однако, когда я запускаю` npm install`, опция меняется на `domain / user: password @ urltoproxy: port` Так как мне обойти это? Jacob Schneider 5 лет назад 0
10
nafisto

Может быть, установка переменной среды подойдет вам:

set HTTP_PROXY=http://user:pass@server.url:port 

(В моем случае это решает проблему «подключить НЕИЗВЕСТНО», но я получаю совершенно другую ошибку «зависание сокета». Я также попытался установить переменную среды HTTPS_PROXY, но получил тот же результат.)

Я попытался установить переменную среды, а также попытался передать --proxy http: // user: pass@server.url: port в команду, но теперь я всегда получаю ECONNREFUSED. Нужно ли указывать мой домен AD для входа в прокси? Tobias 12 лет назад 0
Работал как шарм. Спасибо! x97mdr 11 лет назад 0
@Tobias попробуйте `установить HTTP_PROXY = http: // домен \ пользователь: pass@server.url: порт` Adam Grant 10 лет назад 0
8
sam

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

  • Идти к: C:\Users\YourUserName
  • Создайте файл с именем .npmrc
  • И это запись будет читать:

    registry = http://registry.npmjs.org 
  • Попробуйте команду еще node cli.js install npm -gfраз.

Я создал файл с указанным вами содержимым, но все еще получаю сообщение об ошибке НЕИЗВЕСТНО :( Tobias 12 лет назад 0
Приветствия для этого. Сделал «реестр конфигурации npm http://registry.npmjs.org», чтобы обойти https: // и все хорошо на моей установке Windows. Gavin Gilmour 12 лет назад 0
если кто-то получает сообщение ETIMEOUT, добавьте настройку прокси-сервера с помощью `node config set proxy http: // username: password @ server: port` Jeremy S. 11 лет назад 1
Для меня сработало создание файла `~ / .npmrc`, как указано выше, который говорит npm использовать реестр` http: // `вместо` https: // `, а затем устанавливает мою переменную среды` http_proxy` в ` Http: // MyUserName: mypassword@proxy.company.com: 1234` Maxy-B 11 лет назад 0
Заголовок, если ваш пароль содержит "@", npm не сможет правильно проанализировать ваши настройки прокси. Возможный обходной путь - ввести поддельное имя пользователя: пароль в конфигурации npm и использовать локальный прокси-сервер (например, fiddler), чтобы изменить заголовок Proxy-Authorization запроса, чтобы иметь правильное имя пользователя: пароль. Помните, что имя пользователя: пароль, хранящийся в Proxy-Authorization, закодирован в base64. BStruthers 10 лет назад 0
В моем случае переключение реестра с `https: //` на `http: //` решило его Neps 6 лет назад 0
4
rob

После некоторых исследований я мог бы использовать это следующим образом:

  1. Установите авторизационный прокси-сервер NTLM или другой прокси-сервер для NTLM, например Cntlm. Лично я предпочитаю сервер python, потому что я могу с ним повозиться, и производительность не является проблемой.

  2. Настроить конфигурацию; обратите внимание, что в моем случае мне нужно было включить режимы LM и NT, и я подозреваю, что в настоящее время это нормальный случай.

  3. Задайте переменные среды http_proxy и https_proxy, чтобы они указывали на ваш локальный прокси:

    set http_proxy = "localhost: 5865"
    set https_proxy = "localhost: 5865"

  4. Теперь npm должен работать, конечно, он должен выполняться из оболочки, в которой определены вышеуказанные переменные среды.

3
Chummar

Следующее сработало для меня.

В Windows 7:

npm config set proxy xxhttp://username:password@proxyhost:port# 

Это должно создать файл с именем .npmrcв C:/users/<username>папке.

3
Super Luvdub

Type this in command line:

npm set proxy http://user:pass@ip:port

npm set https-proxy http://user:pass@ip:port

DONT FORGET TO INCLUDE HTTP:// before your username. It worked for me.

2
John

Эта проблема была решена для меня после создания файла .npmrc, как описано выше, а затем после запуска команды adduser и следования инструкциям cmd.

npm adduser 

Запустите следующую команду, чтобы увидеть, есть ли у вас авторизованное имя пользователя:

npm whoami 
2
nilleb

Each one of the above answers needs the user to write her password in a text file, or in an environ ment variable.

Personally I didn't like a solution like these, for their insecure approach. So I tried to write an application which injects the Kerberos token of the current user in the exchanges between the client (npm, bower, git) and the proxy. That said, Active Directory is just a proprietary implementation of Kerberos.

I use this software everyday, on a Windows 8.1 host. You can find the code (golang) and the first release binaries on https://github.com/nilleb/authentication-proxy.

1
catrapture

Все три вещи работали для меня в .npmrc

proxy = http://unam:pwd@host:port https-proxy = http://unam:pwd@host:port registry = http://registry.npmjs.org 
1
Ganesh

At least in Windows, it works for me with the following setting:

proxy=http://domain%5Cusername:password@proxy_ip:port

i.e., (1) use %5C instead of \ (as suggested elsewhere) and (2) use the IP address instead of the local machine name for the proxy server.

Это правильно - домен + имя пользователя и пароль должны быть отдельно закодированы. Например, если у вас есть # в вашем пароле, замените его на% 23 saille 8 лет назад 0