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


30

Мені потрібно запустити останню версію 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, можливо, через аргументи командного рядка?

Я можу надати повний журнал (але, схоже, немає більше відповідної інформації), використовуючи пастибін, якщо потрібно.


6
Невелика хитрість, якщо ім’я користувача містить домен \ нотація користувача, замініть

@layos Дякую вам sooooo. Якби це було reddit, я б тобі видав золото.
Корінна

Відповіді:


39

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" вище.

Ваш проксі-рядок, можливо, потрібно трохи підправити, але це зробило так, що мені не довелося додавати це кожен раз.

Ура


3
Якщо ваш пароль містить "@" npm, не буде правильно проаналізовано налаштування проксі-сервера. Потенційне рішення полягає в тому, щоб поставити помилкове ім'я користувача: пароль у npm-конфігурацію та використовувати локальний проксі (наприклад, fiddler) для зміни заголовка проксі-авторизації запиту, щоб мати правильне ім’я користувача: пароль. Майте на увазі ім’я користувача: пароль, що зберігається в проксі-авторизації, закодований base64.
BStruthers

9
Мені доводиться працювати:proxy = http://ip:port/ https-proxy = http://ip:port/ registry = http://registry.npmjs.org/ strict-ssl = false
Лука

1
не працював з ім'ям користувача: пароль
philx_x

1
Ей, я спробував використовувати, domain\\user:password@urltoproxy:portале коли я запускаю npm installпараметр зміни на " domain/user:password@urltoproxy:portТак як мені це зробити?"
Якоб Шнайдер

У мене те саме питання, що і у @JacobSchneider, на моєму .npmrc: -ssl=false registry=http://registry.npmjs.org/ proxy=http://domain\\username:password#@proxy.url:8080 тоді, коли я отримую налаштування з config з npm config get proxy: http://domain/username:password#@proxy.url:8080 зауважте, що
відхилений зворотний косий рядок

10

Можливо, встановлення змінної середовища допоможе вам:

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

(У моєму випадку це вирішує проблему "підключення НЕЗНАЧЕНО", але я отримую зовсім іншу помилку "зависання сокета". Я також спробував встановити змінну середовища HTTPS_PROXY, але отримав той самий результат.)


Я спробував встановити змінну середовища, а також спробував передати команду --proxy : pass@server.url: port до команди, але тепер я завжди отримую ECONNREFUSED .. Чи потрібно вказати мій домен AD для входу проксі?
Тобіас

Спробуйте @Tobiasset HTTP_PROXY=http://domain\user:pass@server.url:port
Адам Грант

8

У мене було це ідентичне питання, і ось що я зробив, щоб зробити цю роботу:

  • Йти до: C:\Users\YourUserName
  • Створіть файл з назвою .npmrc
  • І його запис буде читати:

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


Я створив файл із вмістом, який ви згадали, але все-таки отримую помилку підключення НЕВІДОМО :(
Tobias

Ура за це. Зробив «NPM конфігурації набір реєстру registry.npmjs.org » , щоб обійти https: // і все добре на моїй установці вікон.
Гевін Гілмур

1
якщо хтось отримає повідомлення ETIMEOUT, додайте налаштування проксі зnode config set proxy http://username:password@server:port
Jeremy S.

Що для мене працювало - це створити ~/.npmrcфайл, як вище, який вказує npm використовувати http://реєстр замість https://, а потім встановити мій http_proxyзмінний оточення наhttp://myusername:mypassword@proxy.company.com:1234
Maxy-B

Якщо ваш пароль містить "@" npm, не буде правильно проаналізовано налаштування проксі-сервера. Потенційне рішення полягає в тому, щоб поставити помилкове ім'я користувача: пароль у npm-конфігурацію та використовувати локальний проксі (наприклад, fiddler) для зміни заголовка проксі-авторизації запиту, щоб мати правильне ім’я користувача: пароль. Майте на увазі ім’я користувача: пароль, що зберігається в проксі-авторизації, закодований base64.
BStruthers

4

Після деяких досліджень я міг би використовувати це таким чином:

  1. Встановіть проксі-сервер авторизації NTLM або інший проксі-сервер для NTLM, наприклад, Cntlm. Особисто я віддаю перевагу серверу python, тому що можу повозитися з ним, а продуктивність - це не проблема.

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

  3. Встановіть змінну http_proxy та https_proxy для вказівки на ваш локальний проксі:

    встановити http_proxy = "localhost: 5865"
    встановити https_proxy = "localhost: 5865"

  4. npm має працювати зараз, звичайно, він повинен виконуватися з оболонки, де визначені вищезгадані змінні середовища.


3

Наступне працювало для мене.

У Windows 7:

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

Це має створити файл, названий .npmrcу C:/users/<username>папці.


3

Введіть це в командному рядку:

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

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

НЕ ЗАБУЧАЙТЕ ВКЛЮЧИТИ HTTP: // перед вашим іменем користувача. Це працювало для мене.


2

Ця проблема була вирішена для мене після створення файлу .npmrc, як зазначено вище, а потім запуску команди adduser та наступних підказок cmd.

npm adduser

Запустіть наступного учасника, щоб побачити, чи маєте Ви авторизоване ім’я користувача:

npm whoami

2

Кожна з наведених вище відповідей потребує користувача, щоб написати свій пароль у текстовому файлі чи у змінній середовища.

Особисто мені не сподобалося таке рішення, за їх невпевнений підхід. Тому я спробував написати додаток, яке вводить маркер Kerberos поточного користувача в обмінах між клієнтом (npm, bower, git) та проксі. Однак, Active Directory - це лише власна реалізація Kerberos.

Я використовую це програмне забезпечення щодня на хості Windows 8.1. Ви можете знайти код (golang) та бінарні файли першого випуску на https://github.com/nilleb/authentication-proxy .


1

Усі три речі працювали для мене в .npmrc

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

1

Принаймні в Windows, для мене це працює з наступними налаштуваннями:

proxy = http: // домен % 5C ім'я користувача : пароль @ proxy_ip : порт

тобто (1) використовувати %5Cзамість \(як це запропоновано в іншому місці) та (2) використовувати IP-адресу замість імені локальної машини для проксі-сервера.


Це правильно - домен + ім’я користувача та пароль потрібно кодувати URL окремо. Наприклад, якщо у вас пароль #, замініть його на% 23
saille

1

Ви отримаєте хост і порт проксі від вашого адміністратора сервера або підтримки.

Після цього налаштуйте

npm config set http_proxy http://username:password@proxyofmycomp.com:itsport
npm config set proxy http://username:password@proxyofmycomp.com:itsport

Якщо в паролі є якийсь спеціальний символ, спробуйте з% urlencode. Напр .: - фунт (хеш) слід замінити на% 23.


2
На які версії застосовується ваша відповідь, враховуючи, що питання було задано більше 3 років тому?
Джейсон Аллер

Я вірю, це не має значення. Я знайшов рішення цієї проблеми після багато спроб і ніколи не знав, що мій пароль створює проблему. Для того, щоб зробити його ідеальним враженням, жодне питання не задавались ще до десяти років:) ...
Shamseer

0

Для мене вирішено таке рішення:

npm config set http_proxy http: // ім'я користувача : пароль @ хост / IP : порт

npm config set проксі http: // ім'я користувача : пароль @ хост / IP : порт

замініть параметри значеннями, в моєму випадку

ім'я користувача (порожнє)

пароль : (порожній)

хост / IP : 192.36.36.110

порт : 8080

тому Мої команди є

npm config set http_proxy http: //: @ 192.36.36.110: 8080

npm config set proxy http: //: @ 192.36.36.110: 8080


0

CNTLM не працював для мене. Я спробував всі можливі комбінації. NPM видав помилку аутентифікації. Фіддлер прийшов на допомогу і врятував мій час. Встановити та налаштувати його легко. Встановіть правило Fiddler на автоматичну перевірку автентичності. В .npmrc встановіть ці

registry=http://registry.npmjs.org
proxy=http://127.0.0.1:8888
https-proxy=http://127.0.0.1:8888
http-proxy=http://127.0.0.1:8888
strict-ssl=false

Це працювало для мене :)


0

Що для мене працювало так:

registry=http://registry.npmjs.org
proxy=http://<url.pac>
https-proxy=http://<url.pac>
http-proxy=http://<url.pac>
strict-ssl=false

Мені не потрібно було вводити імена користувачів або паролі, просто URL-адреса файлу PAC.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.