npm и yarn за прокси
Корпоративные сети ломают npm install довольно предсказуемо. Показываем, как настроить npm и обе основные версии yarn на установку через HTTP-прокси, плюс переменные окружения, общие для всего инструментария Node.
npm, yarn и HTTP-прокси
Пакетные менеджеры качают через HTTPS, поэтому им нужен HTTP-прокси с поддержкой CONNECT — а это ровно то, чем является HTTP-эндпоинт s4m на порту 3128. npm держит собственный конфиг, поэтому переменных окружения в шелле не всегда достаточно: обычно в конфиге npm выставляют сразу proxy и https-proxy, чтобы трафик к реестру пошёл куда надо. Два поколения yarn различаются: классический yarn v1 читает собственные настройки proxy / https-proxy (и по большей части уважает npm-овские), а Yarn Berry (v2+) использует ключи httpProxy и httpsProxy в .yarnrc.yml.
Все они точно так же уважают стандартные переменные окружения http_proxy, https_proxy и no_proxy — это самый быстрый способ протолкнуть разовый npm install на закрытой машине. В s4m вы аутентифицируетесь парой USER:PASS на proxy.s4m.online:3128. Смотрите страницу прокси и общее руководство по переменным окружения; соседнее руководство по pip и conda покрывает тот же сюжет для Python.
Настройка npm, yarn v1 и Berry
Постоянный конфиг для каждого инструмента плюс запасной вариант через переменные окружения. Подставьте свои USER:PASS перед запуском.
# --- npm: persistent config (writes to ~/.npmrc) --- npm config set proxy http://USER:[email protected]:3128 npm config set https-proxy http://USER:[email protected]:3128 npm config set noproxy localhost,127.0.0.1,.internal npm install # To undo later: # npm config delete proxy && npm config delete https-proxy # --- yarn v1 (classic) --- yarn config set proxy http://USER:[email protected]:3128 yarn config set https-proxy http://USER:[email protected]:3128 # --- Yarn Berry (v2+): .yarnrc.yml --- cat >> .yarnrc.yml <<'YML' httpProxy: "http://USER:[email protected]:3128" httpsProxy: "http://USER:[email protected]:3128" YML # --- Environment variables: quickest one-off fix --- export https_proxy="http://USER:[email protected]:3128" export http_proxy="http://USER:[email protected]:3128" export no_proxy="localhost,127.0.0.1,.internal" npm install
Починить npm install за прокси
В каком порядке действовать, когда установка отваливается по таймауту.
Убедитесь, что дело в прокси
Запустите npm install -ddd (или с --verbose) и поищите ETIMEDOUT или ECONNREFUSED к реестру — это указывает на заблокированное исходящее соединение, которому нужен прокси.
Выставьте npm proxy и https-proxy
Через npm config set задайте и proxy, и https-proxy на http://USER:[email protected]:3128. Трафик к реестру идёт по HTTPS, поэтому обычно решающий именно https-proxy.
Учтите версию yarn
Для yarn v1 — yarn config set; для Yarn Berry добавьте httpProxy и httpsProxy в .yarnrc.yml. Смешивать два стиля конфига не стоит.
Добавьте noproxy для внутренних реестров
Если у вас есть ещё и частный реестр в локальной сети, добавьте его хост в noproxy / no_proxy, чтобы к нему ходили напрямую, а не через внешний прокси.
Авторизация, частные реестры и грабли
Две вещи ломают установку даже после того, как прокси прописан. Первая — спецсимволы в пароле: если в нём есть @, : или #, закодируйте их в URL-формате (например, @ становится %40), иначе конфиг разберёт URL неправильно. Вторая — смесь публичного и частного реестров: добавьте хост внутреннего реестра в noproxy, чтобы к нему ходили напрямую, тогда как публичный реестр npm идёт через прокси.
HTTP-эндпоинт s4m — аутентифицированный дата-центровый прокси с оплатой за потраченное: ровно то, что нужно CI-раннерам и машинам разработчиков, которым надо добраться до npm из-под контролируемого выхода в сеть. Это не резидентский прокси и не кеш пакетов; для установки без интернета поднимайте настоящее зеркало реестра. Когда вашему CI нужен один исходящий IP для белого списка, добавьте выделенный персональный IP. 407 означает неверные учётные данные — смотрите руководство по 407. Тот же эндпоинт обслуживает pip/conda и Docker; проверить его можно инструментами.
Ответы на вопросы
Почему npm install зависает или отваливается по таймауту за прокси?
К реестру ходят по HTTPS, а ваше исходящее соединение заблокировано. Выставьте в npm proxy и https-proxy (и/или переменные окружения http_proxy/https_proxy) на http://USER:[email protected]:3128.
Как настроить Yarn Berry и чем это отличается от yarn v1?
yarn v1 использует yarn config set proxy / https-proxy. Yarn Berry (v2+) — ключи httpProxy и httpsProxy в .yarnrc.yml. Держитесь одного стиля на проект, не смешивайте их.
В пароле спецсимволы, и прокси не работает — почему?
npm разбирает значение прокси как URL, поэтому символы вроде @, : или # в пароле должны быть закодированы в URL-формате (например, @ становится %40). После кодирования учётные данные разбираются правильно.
Как оставить внутренний реестр вне прокси?
Добавьте имя хоста внутреннего реестра в список noproxy (npm) или no_proxy (переменная окружения). Тогда к этому хосту ходят напрямую, а трафик к публичному реестру по-прежнему идёт через прокси.
Разблокируйте установку пакетов Node
Пустите npm и yarn через аутентифицированный HTTP-эндпоинт на proxy.s4m.online:3128. Оплата за потраченное, а когда CI нужен один адрес для белого списка — выделенный IP.
Эту страницу нашли по запросу
- npm и yarn за прокси
- curl через SOCKS5-прокси
- как проверить npm и yarn за прокси
- npm и yarn за прокси для парсинга
- npm и yarn за прокси настройки
- методы аутентификации SOCKS5 (RFC 1929)
- vpn kill switch инструкция
- http прокси с оплатой криптой
- как сконфигурировать wireguard
- openvpn
- wireguard
- FAQ о VPN и прокси
Реальные поисковые фразы, на которые отвечает эта страница — по ссылкам откроются материалы, раскрывающие тему глубже.