<p>yarn не соблюдает настройки аутентификации в .npmrc</p>

Созданный на 14 сент. 2017  ·  86Комментарии  ·  Источник: yarnpkg/yarn

Вы хотите запросить функцию или сообщить об ошибке ?
ОШИБКА
Каково текущее поведение?
Пряжа не поддерживает .npmrc
Если текущее поведение является ошибкой, предоставьте шаги для воспроизведения.
Нам требуется аутентификация для одного из наших репозиториев, и мы делали это, задавая аутентификацию в .npmrc. Это сработало до 0.28.4, но сломалось в 1.0.0

Какое поведение ожидается?
Соблюдение настроек аутентификации в .npmrc

Пожалуйста, укажите ваш node.js, yarn и версию операционной системы.
Это происходит после обновления пряжи до 1.0.0 / 1.0.1 (пробовали обе версии). Независимо от ОС и версии nodejs.

cat-bug help wanted

Самый полезный комментарий

об этом сообщалось в 2017 году, сейчас 2019 год, и эта проблема все еще существует.

Все 86 Комментарий

Это должно быть исправлено в версии 1.0.2, которая была выпущена вчера. Можете ли вы попробовать?

@BYK Я испытываю те же проблемы, что и выше и упомянутые в конце # 4157. Я попытался запустить 1.0.2 и не смог выполнить 404 . Запуск на 0.27.5 работает должным образом.

Не могли бы вы вставить сюда свой файл npmrc, чтобы мы могли попытаться воспроизвести (очевидно, отредактируйте секреты или другую личную информацию)

@KidkArolis , пытаясь сделать мой рабочий устранило проблему? 🙃

Шаги, которые я предпринял:

  • Удалить yarn.lock и любые файлы yarn-error.log
  • Удалить node_modules/
  • brew link yarn и yarn --version чтобы убедиться, что я был на уровне 1.0.2
  • yarn

Кажется, это сработало. Я собираюсь списать это на ошибку пользователя со своей стороны и со стороны моей команды.

@beardedtim Как насчет того, чтобы сейчас вы взорвать node_modules но оставить yarn.lock а затем запустить yarn install ? Тогда все работает? Отчасти это отслеживает # 4157, но может быть связано с более серьезной проблемой?

У меня возникла эта проблема (404 в репо с закрытой областью действия, какой бы реестр я ни использовал) для версий пряжи 1.0.1 и 1.0.2. Версия 0.27.5 заработала после удаления некоторых артефактов.

Я пробовал все обходные пути, описанные в https://github.com/yarnpkg/yarn/issues/4157. С удовольствием публикую логи, если это поможет.

@stieg Я попробую это позже сегодня, когда у меня будет свободное время после обеда, и

Кто-нибудь нашел решение этого?

FWIW: Я пробовал:

  • Стираю node_modules
  • Удаление ~/.yarn
  • curl -o- -L https://yarnpkg.com/install.sh | bash для переустановки пряжи 1.0.2
  • yarn install - _нет ошибок_, все установил безупречно.

Мои ~/.yarnrc :

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


registry "https://registry.npmjs.org"
email [email protected]
lastUpdateCheck 1505977814820
username some-user
````

And my `~/.npmrc`:

//registry.npmjs.org/:_authToken=a-valid-uuid


The `yarn.lock` references look like this in my particular case:

решено " https://registry.npmjs.org/@acme/some -module / - / some-module-0.1.1.tgz # valid-git-sha"
`` ''

Интересно. Поместив реестр в свой файл .yarnrc , я смог установить свои пакеты. Однако я удалил его, чтобы проверить, не виноват ли он, и он все еще был успешным (я удалил свой кеш, поэтому Yarn пришлось его загрузить, и ему удалось это сделать правильно).

Я попробовал новую установку (на этот раз Debian, другой был macOS), и эти настройки в ~/.npmrc и ~/.yarnrc работали одинаково хорошо. (Примечание: я не пробовал npm login или yarn login .)

Закрытие, поскольку люди, сообщающие об этом, были устранены. Повторите попытку с конкретными шагами воспроизведения, если это не решено для вас,

@BYK У меня была такая же проблема.
Я использовал чистую установку последней версии пряжи.
И он начинает работать после того, как я добавил registry "https://registry.npmjs.org" в ~/.yarnrc .
Я считаю, что это ошибка, и ее нужно решать автоматически, а не вручную, как мы.

@BYK Может быть https://registry.npmjs.org .

Однако я думаю, что все еще существует проблема с получением частных пакетов из реестра https://registry.yarnpkg.com , и это реестр по умолчанию, используемый yarn (это все еще просто обратный прокси ? Возможно, он не соблюдает заголовки auth? ).

Конкретные шаги воспроизводства

  1. Удалите / переместите файлы .npmrc и .yarnrc чтобы yarn использовала конфигурацию по умолчанию.
  2. Найдите пакет, опубликованный конфиденциально в реестре npm.
    1а. Если вы загрузили / опубликовали его с той же машины, на которой тестируете пряжу, очистите кеши npm и yarn.
  3. Запустите npm login или yarn login чтобы заполнить токен аутентификации.
  4. Используя любую версию пряжи после 0.27.5 , попробуйте установить этот пакет.
Ожидаемые результаты

Пакет успешно установлен.

Фактические результаты
❤ <strong i="26">@up</strong> ➜  REPO git:(master) ★ yarn add @SCOPE/PACKAGE 
yarn add v1.1.0
info No lockfile found.
[1/5] Validating package.json...
[2/5] Resolving packages...
error An unexpected error occurred: "https://registry.npmjs.org/@SCOPE%2fPACKAGE: Not found".
info If you think this is a bug, please open a bug report with the information provided in "/home/katy/dev/REPO/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

Если сопровождающие проекта сочтут инструкции

Я согласен с @kmoe , основная проблема не исправлена ​​даже в последних версиях yarn. Пожалуйста, повторно откройте проблему. Да, у нас есть обходной путь, но в этом случае обходной путь! = Решение.

FWIW, это все еще проблема в 1.1.0. Я только что это проверил (вернулся сюда для обходного пути, а именно registry "https://registry.npmjs.org" добавляется к ~/.yarnrc )

У меня эта проблема в пряжи 1.3.2, и прямо сейчас она ломает наши сборки. Он отлично работал с пряжей 0,27,5.

Нам нужен токен авторизации из файла .npmrc для установки пакетов из нашего частного реестра Artifactory.

Этапы воспроизведения:

  1. Имейте файл .npmrc с информацией для аутентификации, например:
registry=https://artifactory.mycompany.com/artifactory/api/npm/npm-virtual
_auth = myAuthTokenHere
always-auth = true
email = [email protected]
  1. Запустить yarn install
  2. Получите ошибку HTTP 401, когда yarn пытается установить что-то из частного реестра:
error An unexpected error occurred: "https://artifactory.mycompany.com/api/npm/npm-virtual/@angular/compiler/-/compiler-4.3.1.tgz: Request failed \"401 Unauthorized\"".

Связанный: # 4672

@stewx У меня такая же проблема на 1.3.2. Вы нашли решение или способ обойти это?

@jamesone Нет, я понизил

@stewx @jamesone
Добавьте registry "https://registry.npmjs.org" в свой .yarnrc и переустановите частные пакеты
Он скажет yarn работать напрямую с реестром npmjs и решит проблему.

Кажется неправильным 0.27.5 только для того, чтобы обойти эту единственную проблему, но похоже, что многие делают именно это _или_ перенаправляют registry config (хотя @stewx сообщает, что не решает проблему для самостоятельного размещения частные реестры).

Если у постоянных участников проекта нет времени исправить это в краткосрочной перспективе, захочет ли кто-нибудь предложить местоположение (а) кодовой базы, где исправление с наибольшей вероятностью будет успешным, в надежде, что будет открыт PR сообщества? 🤔

/ cc @kittens @bestander @BYK @arcanis @ rally25rs @kaylieEB

@Bnaya Когда вы говорите переустановить, вы имеете в виду удалить node_modules в своем проекте или очистить кеш пряжи?

пряжа удалить ваш частный пакет; пряжа добавить свой частный пакет

И в файле блокировки вы увидите https://registry.npmjs.org/*** url, а не https://registry.yarnpkg ***

Я бы предложил добавить .yarnrc рядом с вашим package.json

Я фактически заставил это работать, поместив registry "https://registry.npmjs.org" в ~/.yarnrc , т.е. нет необходимости в локальном пакете .yarnrc .

Шаги по воспроизведению ошибки для меня:

  • нет измененного ~/.yarnrc
  • создать новый проект
  • пряжа кеш чистая
  • пряжа добавить частный модуль -> сбой

Если я изменю ~/.yarnrc как указано выше, шаги не вызовут ошибки.

Если я посмотрю на некоторые из моих проектов, где есть ошибки, я вижу, что yarn.lock содержит https://registry.yarnpkg.com/@myscope/mypackage/ . Чтобы эти проекты заработали, мне нужно удалить yarn.lock и заново создать его после обновления до ./.yarnrc .

Это, кажется, объясняет, почему у некоторых людей все еще возникают ошибки, даже когда они пробуют что-то, что работает для других.

Как решить в заключение:

  • добавить registry "https://registry.npmjs.org" в ~ / .yarnrc
  • удалить и восстановить yarn.lock для неудачных проектов

@TheLudd Восстановление yarn.lock с нуля

Вместо этого разработчики проекта могут захотеть рассмотреть возможность поиска / замены с yarnpkg.com на npmjs.org , сохранив текущее состояние файла блокировки.

@awkaiser Что ж, пока ваши тесты проходят, вы можете зафиксировать его, и все другие соавторы будут иметь ту же среду, что и вы. Так что не совсем побеждать его цель ИМО.
Но да, вы также можете найти замену.

Но есть правило, что вы не должны изменять yarn.lock вручную;)

Если бы всегда было безопасно извлекать самые свежие пакеты, удовлетворяющие нашим требованиям package.json , нам вообще не понадобились бы файлы блокировки. 😜

Обычно да, мы не должны изменять yarn.lock вручную, но это, поскольку ошибка, поддерживает исключение из этого правила. Обновление ссылки на расположение реестра с помощью поиска и замены должно быть простым и безопасным. 🍻

Мне не нужно было восстанавливать весь мой файл блокировки.
Просто чтобы удалить и установить частные пакеты

@awkaiser или кто-либо еще в теме - один из способов помочь - создать воспроизводимый пример. Например, используйте это репо https://github.com/KidkArolis/yarn-scopes-issue. Если вы можете создать репо, в котором запуск yarn завершается неудачно (конкретный ответ реестра, конкретная конфигурация пряжи, конкретный package.json и т. Д.) - тогда я определенно мог бы взглянуть на решение проблемы.

В общем-то:

  1. Вам не нужен .yarnrc файл
  2. Вам не нужно .yarnrc чтобы содержать registry "https://registry.npmjs.org"
  3. Частные модули от registry.npmjs.org должны работать
  4. Частные модули от custom.registry.org должны работать

@KidkArolis неудачи случайны. но они там есть.
Как я писал по другой связанной проблеме: это или проблема с реестром пряжи (возможно, сбои кеширования, плохой заголовок Vary на прокси-сервере, что угодно) или сложный крайний случай внутри пряжи, который происходит только с реестром пряжи.

Неужели того, что @kmoe написал 25 сентября 2017 г., недостаточно? 🤔

Это побудило к повторному открытию этого выпуска, предполагающему воспроизведение авторами.

@KidkArolis Я не уверен, как я могу создать воспроизводимый пример в репозитории, поскольку это касается частных модулей и, таким образом, зависит от того, кто запускает yarn, верно? Но мои шаги по воспроизведению ошибки здесь https://github.com/yarnpkg/yarn/issues/4451#issuecomment -355248563, и того, что написал @kmoe, также достаточно.

Когда я пытаюсь установить частный пакет без изменения .yarnrc я получаю ошибку

Произошла непредвиденная ошибка: https://registry.yarnpkg.com

Это означает, что он просматривает реестр пряжи, а не npm. Разве это не ошибка, вызывающая эту ошибку?

Хорошо, спасибо, что обновили эти шаги воспроизведения. Я попробую и посмотрю.

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

@npm-username:registry=https://registry.yarnpkg.com/

Есть ли у кого-нибудь частный пакет npm, в который они могли бы меня добавить? Имя пользователя: kidkarolis .

Я изо всех сил пытаюсь получить платную учетную запись, их система биллинга / учетной записи, похоже, не работает для меня в банкомате (я получаю 402 Payment Required хотя они взимали с меня: - "). Итак, пока я жду npm's support, если кто-то добавит меня в частный пакет (если это вообще возможно), это ускорит процесс.

Хорошо, я думаю, это было просто ... постоянство в конечном итоге, моя личная учетная запись npm теперь работает.

Однако я пока не могу воспроизвести проблему :(

Я выполнил шаги, предоставленные @kmoe :

  1. rm ~/.yarnrc && rm ~/.npmrc
  2. yarn cache clean && npm cache clean --force
  3. npm login
  4. yarn add @scope/pkg

Устанавливается нормально (и не работает, если я не npm login ). Другими словами - у меня работает как положено.

И судя по yarn.lock, моя установка проходит через https://registry.yarnpkg.com и, похоже, использует аутентификацию, как и ожидалось. Может быть, проблема на сервере была раньше, но теперь она решена?

Ок, думаю, что-то воспроизвел.

Если я добавлю <strong i="6">@qubit</strong>:registry=https://registry.npmjs.org/ к .npmrc - установка перестанет работать.
Я думаю, что эта строка добавляется, если вы входите в систему с помощью npm login --scope=@qubit и не добавляется, если вы входите только с npm login . Посмотрим, как это исправить дальше.

@KidkArol - другой распространенный способ настройки этой конфигурации:

npm config set <strong i="8">@qubit</strong>:registry https://registry.npmjs.org

Открыл PR - # 5162 отзыв (или даже QA) приветствую.

@KidkArolis Спасибо за пиар. Но я думаю, что проблема заключается не только в случае «--scope», но и в более общем случае, когда частное репо также отражает публичные пакеты с auth.

Кстати, @ bytheway875 , ваш трюк с использованием https://registry.yarnpkg.com/ в качестве реестра у меня сработал.

Моя ситуация:

  • Цель: установить частные пакеты с yarn из организации (@ org-name) на npmjs.com, используя authToken в локальном файле .npmrc во время сборки CI (GitLab), так что не авторизовался в npm .
  • работает с npm
  • нет проблем на машине dev (mac), я могу npm login и yarn просто работать ИЛИ я могу выйти из npm, но вручную создать файл local / HOME dir .npmrc с одна строка: //registry.npmjs.org/:_authToken=token и yarn просто работают (этот второй метод _might_ работает из-за локального кеша, не пытался его стереть)
  • .yarnrc трюк сверху не сработал

_Единственный способ заставить это работать - это создать локальный файл .npmrc перед запуском yarn install в CI: _

@org-name:registry=https://registry.yarnpkg.com/
always-auth=true
_authToken=token

У меня была аналогичная проблема с файлом .npmrc . Все, что мне нужно было сделать, это установить кодировку файла .npmrc в ANSI (в Windows вы можете использовать notepad.exe> ​​Сохранить как ...).
Вы можете проверить, как yarn видит содержимое вашего файла .npmrc , используя yarn config list

Я не могу заставить это работать с v1.4.1 . У меня есть частное репо Nexus, и я использую его как кеш / прокси ( вот так ). Я не могу найти точных инструкций, так что, возможно, я что-то делаю не так. Я взял синтаксис yarn config здесь и yarn login здесь .

Изменить : я должен был упомянуть, что сначала попытался войти в систему через NPM, чтобы получить необходимые .npmrc прежде чем пытаться с yarn .

Ниже именно то, что я делаю для тестирования.

Проверьте фиксацию слияния (dc705768)

git tag --contains dc705768
v1.4.0
v1.4.1

Настроить

Создайте файл Dockerfile, чтобы предоставить согласованную базовую среду для тестирования.

# Build
#  docker build -t yarn-private-registry-test .
# Run
#  docker run -it --rm yarn-private-registry-test

FROM debian:9.3-slim

WORKDIR /projects

RUN apt-get update \
  && apt-get --yes install curl gnupg \
  && curl -sL https://deb.nodesource.com/setup_8.x | bash - \
  && apt-get install --yes nodejs \
  && curl -OL https://github.com/yarnpkg/yarn/releases/download/v1.4.1/yarn_1.4.1_all.deb \
  && find . -name yarn*.deb -exec dpkg --install {} \; \
  && find . -name yarn*.deb -exec rm {} \;

Создать образ Docker

docker build -t yarn-private-registry-test .

Тестовая пряжа

Подсказка : продолжайте выходить из контейнера Docker и перезапускайте его, чтобы получить чистую среду.

Нет конфигурации

Убедитесь, что среда работает, инициализировав проект и добавив зависимость без каких-либо изменений конфигурации.

Запустить Docker Container

docker run -it --rm yarn-private-registry-test

Контрольная работа

Добавить зависимость left-pad .

mkdir yarn \
  && cd yarn \
  && yarn init --yes \
  && yarn add left-pad
yarn init v1.4.1
warning The yes flag has been set [...snip...]
success Saved package.json
Done in 0.03s.
yarn add v1.4.1
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency.
└─ [email protected]
Done in 0.52s.

Конфигурация частного реестра

Запустить Docker Container

docker run -it --rm yarn-private-registry-test

Контрольная работа

mkdir yarn \
  && cd yarn \
  && yarn init --yes \
  && yarn config set registry https://example.com/repository/npm-group/ \
  && yarn login
yarn init v1.4.1
warning The yes flag has been set [...snip...]
success Saved package.json
Done in 0.03s.
yarn config v1.4.1
success Set "registry" to "https://example.com/repository/npm-group/".
Done in 0.04s.
yarn login v1.4.1
question npm username: myusername
question npm email: [email protected]
Done in 6.25s.

Добавить зависимость left-pad .

yarn --verbose add left-pad
yarn add v1.4.1
verbose 0.349 Checking for configuration file "/projects/yarn/.npmrc".
verbose 0.35 Checking for configuration file "/usr/local/share/.npmrc".
verbose 0.35 Checking for configuration file "/usr/etc/npmrc".
verbose 0.352 Checking for configuration file "/root/.npmrc".
verbose 0.353 Checking for configuration file "/projects/yarn/.npmrc".
verbose 0.353 Checking for configuration file "/projects/.npmrc".
verbose 0.355 Checking for configuration file "/projects/yarn/.yarnrc".
verbose 0.355 Checking for configuration file "/usr/local/share/.yarnrc".
verbose 0.357 Found configuration file "/usr/local/share/.yarnrc".
verbose 0.358 Checking for configuration file "/usr/etc/yarnrc".
verbose 0.358 Checking for configuration file "/root/.yarnrc".
verbose 0.359 Checking for configuration file "/projects/yarn/.yarnrc".
verbose 0.359 Checking for configuration file "/projects/.yarnrc".
verbose 0.365 current time: 2018-01-25T21:55:48.886Z
info No lockfile found.
verbose 0.405 Performing "GET" request to "https://yarnpkg.com/latest-version".
[1/4] Resolving packages...
verbose 0.48 Performing "GET" request to "https://example.com/repository/npm-group/left-pad".
verbose 0.52 Request "https://example.com/repository/npm-group/left-pad" finished with status code 401.
verbose 0.522 Error: Couldn't find package "left-pad" on the "npm" registry.
    at new MessageError (/usr/share/yarn/lib/cli.js:186:110)
    at NpmResolver.<anonymous> (/usr/share/yarn/lib/cli.js:50354:15)
    at Generator.next (<anonymous>)
    at step (/usr/share/yarn/lib/cli.js:98:30)
    at /usr/share/yarn/lib/cli.js:109:13
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
error An unexpected error occurred: "Couldn't find package \"left-pad\" on the \"npm\" registry.".
info If you think this is a bug, please open a bug report with the information provided in "/projects/yarn/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
verbose 0.809 Request "https://yarnpkg.com/latest-version" finished with status code 200.

Проверить .yarnrc

cat /usr/local/share/.yarnrc
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


registry "https://example.com/repository/npm-group/"
email [email protected]
lastUpdateCheck 1516917349331
username myusername

Тестовый NPM

Переходите сразу к желаемой конфигурации, потому что она работает.

Конфигурация частного реестра

Запустить Docker Container

docker run -it --rm yarn-private-registry-test

Контрольная работа

mkdir npm \
  && cd npm \
  && npm init --yes \
  && npm config set registry https://example.com/repository/npm-group/ \
  && npm login
Wrote to /projects/npm/package.json:

{
  "name": "npm",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}


Username: myusername
Password:
Email: (this IS public) [email protected]
Logged in as myusername on https://example.com/repository/npm-group/.

Добавить зависимость left-pad .

npm --verbose install left-pad
npm info it worked if it ends with ok
npm verb cli [ '/usr/bin/node',
npm verb cli   '/usr/bin/npm',
npm verb cli   '--verbose',
npm verb cli   'install',
npm verb cli   'left-pad' ]
npm info using [email protected]
npm info using [email protected]
npm verb npm-session 0ed36c84804378c8
npm http fetch GET 200 https://example.com/repository/npm-group/left-pad 78ms
npm http fetch GET 200 https://example.com/repository/npm-group/left-pad/-/left-pad-1.2.0.tgz 28ms
npm verb correctMkdir /root/.npm/_locks correctMkdir not in flight; initializing
npm verb makeDirectory /root/.npm/_locks creation not in flight; initializing
npm verb lock using /root/.npm/_locks/staging-2f9f45630e5bbb1a.lock for /projects/npm/node_modules/.staging
npm info lifecycle [email protected]~preinstall: [email protected]
npm info linkStuff [email protected]
npm verb linkBins [email protected]
npm verb linkMans [email protected]
npm info lifecycle [email protected]~install: [email protected]
npm info lifecycle [email protected]~postinstall: [email protected]
npm verb unlock done using /root/.npm/_locks/staging-2f9f45630e5bbb1a.lock for /projects/npm/node_modules/.staging
npm verb saving [ { name: 'left-pad', spec: '^1.2.0', save: 'dependencies' } ]
npm info lifecycle undefined~preshrinkwrap: undefined
npm info lifecycle undefined~shrinkwrap: undefined
npm notice created a lockfile as package-lock.json. You should commit this file.
npm info lifecycle undefined~postshrinkwrap: undefined
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

+ [email protected]
added 1 package in 0.398s
npm verb exit [ 0, true ]
npm info

@ryanjaeb Спасибо за подробный отчет. Единственное, чего мне не хватает, чтобы сказать вам, что здесь может идти не так, - это содержимое файлов ~/.npmrc и ~/.yarnrc . Вы вставили свой .yarnrc , но он не содержит пароля. Также без файла .npmrc для сравнения трудно определить причину проблемы.

Ваш вариант использования должен нормально работать в ^ 1.4.0, но все дело в том, как выглядит файл конфигурации.

Тбх с вами, я никогда не использую yarn login , я сначала npm login а затем использую yarn . В приведенном выше примере, если вы сначала выполните npm set config registry ... && npm login а затем выполните add left-pad - это сработает? Если npm работает, пряжа тоже. Поэтому мне интересно, не работает ли команда yarn login .

@KidkArolis Игнорируя yarn login и ожидая, что смогу заставить его работать только с npm login , я смог добиться некоторого прогресса. Я вижу две вещи.

.npmrc

Документы для npm-login , похоже, не соответствуют тому, что я на самом деле вижу в .npmrc . В частности, аргумент --always-auth для команды npm login не влияет на конфигурацию, даже если в документации сказано:

Может использоваться с --registry и / или --scope, например
...
Конфигурация always-auth, зависящая от реестра, имеет приоритет над любой глобальной конфигурацией.

Однако, независимо от того, использую я этот аргумент или нет, я всегда получаю один и тот же .npmrc . И то и другое:

npm config set registry https://example.com/repository/npm-group/ \
  && npm login --registry=https://example.com/repository/npm-group/

и

npm config set registry https://example.com/repository/npm-group/ \
  && npm login --registry=https://example.com/repository/npm-group/ --always-auth

произвести это .npmrc :

registry=https://example.com/repository/npm-group/
//example.com/repository/npm-group/:_authToken=NpmToken.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Анализ трафика, поступающего в мой реестр, показывает, что NPM отправляет токен аутентификации независимо от:

GET /repository/npm-group/left-pad HTTP/1.1
Host: example.com
user-agent: npm/5.6.0 node/v8.9.4 linux x64
npm-in-ci: false
npm-scope: 
npm-session: c4c14c0b37be7bd5
referer: install left-pad
pacote-req-type: packument
pacote-pkg-id: registry:manifest
accept: application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*
authorization: Bearer NpmToken.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
accept-encoding: gzip,deflate
X-Forwarded-Proto: https
X-Forwarded-For: 10.10.10.1
X-Forwarded-Host: example.com
X-Forwarded-Server: example.com
Connection: Keep-Alive

Yarn не отправляет токен, если не установлено always-auth . Явная установка флага always-auth в .npmrc заставляет все работать должным образом.

npm config set always-auth true \
    && cat ~/.npmrc
registry=https://example.com/repository/npm-group/
//example.com/repository/npm-group/:_authToken=NpmToken.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
always-auth=true

Помимо того, что я знаю, что поведение NPM и Yarn отличается, я недостаточно знаком с ними, чтобы знать, какое поведение является правильным.

yarn login

Думаю, вы правы в том, что yarn login не работает, но я не тестировал его тщательно. Игнорируя .npmrc и используя только yarn , я пытаюсь имитировать конфигурацию NPM.

yarn config set registry https://example.com/repository/npm-group/ \
    && yarn config set always-auth true \
    && yarn login

.yarnrc :

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


registry "https://example.com/repository/npm-group/"
always-auth true
email [email protected]
lastUpdateCheck 1517883362958
username myusername

Что бы я ни делал, мне никогда не предлагают ввести пароль.

@KidkArolis Для меня npm работает без явного always-auth=true в .npmrc, а yarn (1.3.2 или 1.4.0) - нет. В моем случае я пытаюсь указать все запросы к виртуальному реестру в artifactory. С always-auth=true и authToken в .npmrc - он работает в 1.3.2 , поэтому неясно, что именно было исправлено в 1.4.0 .

Это все еще кажется проблемой, особенно с подключением к нашему репозиторию Nexus.

Я пробовал несколько подходов:

  1. Полностью удаляю ~/.yarnrc и полагаюсь только на то, что находится в ~/.npmrc .
  2. Шарить с настройками реестра в ~/.yarnrc .

Кажется, что пряжа не использует хешированное значение _auth (например, _auth=xyz ) из ~/.npmrc

Информация о версии

NPM

npm --version                                                                                                                                                                                                                                                                                                      
5.6.0

Пряжа

yarn --version
1.5.1

Работает на OS X 10.13.2.

NPMRC

Мой ~/.npmrc выглядит так (некоторые настройки _values_ опущены по понятным причинам):

registry=http://nexus-repo:8081/content/repositories/npm-all
init.author.name=Juan Smith
[email protected]
init.author.url=http://nexus-repo:8081/content/repositories/npm/
[email protected]
_auth=BASE64-HASH-USERNAME-PASSWORD
always-auth=true

YARNRC

Мой ~/.yarnrc выглядит так (опять же очевидные значения опущены):

registry "http://nexus-repo:8081/content/repositories/npm-all//"
email [email protected]
lastUpdateCheck 1521495247797
username jsmith

¯_ (ツ) _ / ¯

Не совсем уверен, куда идти дальше. Не совсем понятно, что происходит, за исключением того, что все сборки пряжи терпят неудачу следующим образом:

error An unexpected error occurred: "http://nexus-repo:8081/content/groups/npm-all/lru-cache/-/lru-cache-4.1.2.tgz: Request failed \"401 Unauthorized\"".

FWIW, IANADOE (я не инженер-разработчик), и я просто пытаюсь использовать пакет, который опирается на пряжу для электронных сборок. Возможно, я просто не знаю, как установить хеш base64 username | password для пряжи. Мне не удалось найти документы, объясняющие это.

У @ezweave Sonatype действительно хорошая документация . По этой ссылке также есть инструкции по тестированию, чтобы убедиться, что вы правильно выполняете кодировку base64. Лично я считаю, что проще всего включить область токенов носителя npm в Nexus и использовать npm login на моей рабочей станции. Пример:

npm config set registry http://nexus-repo:8081/content/repositories/npm-all
npm login --registry=http://nexus-repo:8081/content/repositories/npm-all --always-auth
npm config set always-auth true

Прежде чем пробовать Yarn, убедитесь, что он работает с NPM. Не знаю, имеет ли это значение, но у вас есть две завершающие косые черты ( // ) в реестре .yarnrc .

@ryanjaeb Итак, наша команда DevOps заблокировала Nexus для _только_ поддержки LDAP Realm. Это может быть сутью проблемы, но есть много инструментов, которые полагаются на yarn которые я не могу использовать, потому что это, похоже, не поддерживается. Я пробовал добавить _auth в качестве параметра в соответствующий синтаксис и так далее. Кажется, ничего не работает. (FWIW: множественные косые черты были предполагаемым исправлением связанной проблемы, я сделал это с и без успеха.)

Может подтвердить, что аутентификация Yarn нарушена с помощью Nexus. yarn login не запрашивает пароль, но сообщает, что вошел в систему успешно (нет - никаких изменений в rc файле),

Публикация запрашивает пароль и публикует, но никогда не считывает токен __auth, где бы он ни был установлен, чтобы вам приходилось каждый раз входить в систему. И вы также не можете использовать пряжу в сценарии CI.

пряжа не работает в CI. Это когда-нибудь сработает?

Эта проблема должна была быть исправлена https://github.com/yarnpkg/yarn/pull/5216. У этого PR было описание, содержащее следующее:

Fixes #4157, #4451, #4672, #4119.

и это привело к тому, что GitHub закрыл автоматически только # 4157, когда этот PR был объединен. Остальные вопросы, наверное, тоже следовало закрыть.

@valcion, это может помочь в решении этих проблем - https://github.com/yarnpkg/yarn/pull/5322 , но это проскочило сквозь трещины ..

Добавление еще одной точки данных - yarn 1.8.x + не работает в моем агенте сборки (VSTS). Возврат ТОЛЬКО yarn к 1.7.x решает проблему. Он проверяет правильный реестр, но не использует токены, которые вводятся в .npmrc агентом сборки. Я понимаю, что здесь много переменных, но решил, что это может быть полезно.

Локальный запуск 1.9.x, где токены сохраняются в моем пользователе .npmrc , работает нормально.

Версия 1.9.x

2018-08-03T21:17:04.9324575Z [command]C:\Windows\system32\cmd.exe /D /S /C "C:\Builds\_tool\yarn\1.9.4\x64\yarn-v1.9.4\bin\yarn.cmd build"
2018-08-03T21:17:05.4481355Z yarn run v1.9.4
2018-08-03T21:17:05.5418442Z $ lerna clean && lerna bootstrap
2018-08-03T21:17:08.3387809Z lerna info version 2.11.0
2018-08-03T21:17:08.3387809Z lerna info versioning independent
2018-08-03T21:17:08.3856545Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.3856545Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.3856545Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.3856545Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.4012821Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.4012821Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.4169058Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.4325326Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.4325326Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.7606628Z lerna success clean finished
2018-08-03T21:17:09.5145894Z lerna info version 2.11.0
2018-08-03T21:17:09.5145894Z lerna info versioning independent
2018-08-03T21:17:09.5419287Z lerna info Bootstrapping 9 packages
2018-08-03T21:17:09.5419287Z lerna info lifecycle preinstall
2018-08-03T21:17:09.5576221Z lerna info Installing external dependencies
2018-08-03T21:17:12.8857424Z lerna ERR! execute callback with error
2018-08-03T21:17:12.8857424Z lerna ERR! Error: Command failed: yarn install --mutex network:42424 --non-interactive
2018-08-03T21:17:12.8857424Z lerna ERR! warning package.json: No license field
2018-08-03T21:17:12.8857424Z lerna ERR! warning Waiting for the other yarn instance to finish (4048)
2018-08-03T21:17:12.8857424Z lerna ERR! warning Waiting for the other yarn instance to finish (6896)
2018-08-03T21:17:12.8857424Z lerna ERR! warning No license field
2018-08-03T21:17:12.8857424Z lerna ERR! error An unexpected error occurred: "<INTERNAL_REGISTRY>/lodash.foreach/-/lodash.foreach-2.3.0.tgz: Request failed \"401 Unauthorized\"".
2018-08-03T21:17:12.8857424Z lerna ERR! [1/4] Resolving packages...
2018-08-03T21:17:12.8857424Z lerna ERR! [2/4] Fetching packages...
2018-08-03T21:17:12.8857424Z lerna ERR! info If you think this is a bug, please open a bug report with the information provided in "C:\\Builds\\6\\s\\packages\\<REMOVED>\\yarn-error.log".
2018-08-03T21:17:12.8857424Z lerna ERR! info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
2018-08-03T21:17:12.8857424Z lerna ERR! 
2018-08-03T21:17:12.8857424Z lerna ERR!     at Promise.all.then.arr (C:\Builds\6\s\node_modules\lerna\node_modules\execa\index.js:236:11)
2018-08-03T21:17:12.8857424Z lerna ERR!     at <anonymous>
2018-08-03T21:17:12.9482437Z lerna WARN complete Waiting for 1 child process to exit. CTRL-C to exit immediately.
2018-08-03T21:17:13.0732458Z { Error: Command failed: yarn install --mutex network:42424 --non-interactive
2018-08-03T21:17:13.0732458Z warning package.json: No license field
2018-08-03T21:17:13.0732458Z warning Waiting for the other yarn instance to finish (4048)
2018-08-03T21:17:13.0732458Z warning Waiting for the other yarn instance to finish (6896)
2018-08-03T21:17:13.0732458Z warning No license field
2018-08-03T21:17:13.0732458Z error An unexpected error occurred: "<INTERNAL_REGISTRY>/lodash.foreach/-/lodash.foreach-2.3.0.tgz: Request failed \"401 Unauthorized\"".
2018-08-03T21:17:13.0732458Z [1/4] Resolving packages...
2018-08-03T21:17:13.0732458Z [2/4] Fetching packages...
2018-08-03T21:17:13.0732458Z info If you think this is a bug, please open a bug report with the information provided in "C:\\Builds\\6\\s\\packages\\<REMOVED>\\yarn-error.log".
2018-08-03T21:17:13.0732458Z info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
2018-08-03T21:17:13.0732458Z 
2018-08-03T21:17:13.0732458Z     at Promise.all.then.arr (C:\Builds\6\s\node_modules\lerna\node_modules\execa\index.js:236:11)
2018-08-03T21:17:13.0732458Z     at <anonymous>
2018-08-03T21:17:13.0732458Z     at process._tickCallback (internal/process/next_tick.js:188:7)
2018-08-03T21:17:13.0732458Z   code: 1,
2018-08-03T21:17:13.0732458Z   killed: false,
2018-08-03T21:17:13.0732458Z   stdout: '[1/4] Resolving packages...\n[2/4] Fetching packages...\ninfo If you think this is a bug, please open a bug report with the information provided in "C:\\\\Builds\\\\6\\\\s\\\\packages\\\\<REMOVED>\\\\yarn-error.log".\ninfo Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.\n',
2018-08-03T21:17:13.0732458Z   stderr: 'warning package.json: No license field\nwarning Waiting for the other yarn instance to finish (4048)\nwarning Waiting for the other yarn instance to finish (6896)\nwarning No license field\nerror An unexpected error occurred: "<INTERNAL_REGISTRY>/lodash.foreach/-/lodash.foreach-2.3.0.tgz: Request failed \\"401 Unauthorized\\"".\n',
2018-08-03T21:17:13.0732458Z   failed: true,
2018-08-03T21:17:13.0732458Z   signal: null,
2018-08-03T21:17:13.0732458Z   cmd: 'yarn install --mutex network:42424 --non-interactive',
2018-08-03T21:17:13.0732458Z   timedOut: false,
2018-08-03T21:17:13.0732458Z   exitCode: 1 }
2018-08-03T21:17:13.0888721Z error Command failed with exit code 1.
2018-08-03T21:17:13.0888721Z info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Версия 1.7.X

2018-08-03T21:33:16.4477199Z [command]C:\Windows\system32\cmd.exe /D /S /C "C:\Builds\_tool\yarn\1.7.0\x64\yarn-v1.7.0\bin\yarn.cmd build"
2018-08-03T21:33:16.9633413Z yarn run v1.7.0
2018-08-03T21:33:17.0727225Z $ lerna clean && lerna bootstrap
2018-08-03T21:33:19.2509802Z lerna info version 2.11.0
2018-08-03T21:33:19.2509802Z lerna info versioning independent
2018-08-03T21:33:19.2666043Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.2666043Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.2666043Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.2666043Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.2978554Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.5478528Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.5478528Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.5478528Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.6728520Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.8759839Z lerna success clean finished
2018-08-03T21:33:20.5947225Z lerna info version 2.11.0
2018-08-03T21:33:20.5947225Z lerna info versioning independent
2018-08-03T21:33:20.6103497Z lerna info Bootstrapping 9 packages
2018-08-03T21:33:20.6103497Z lerna info lifecycle preinstall
2018-08-03T21:33:20.6415982Z lerna info Installing external dependencies
2018-08-03T21:33:23.1103303Z lerna info Symlinking packages and binaries
2018-08-03T21:33:23.1415791Z lerna info lifecycle postinstall
2018-08-03T21:33:23.1415791Z lerna info lifecycle prepublish
2018-08-03T21:33:23.1415791Z lerna info lifecycle prepare
2018-08-03T21:33:23.1415791Z lerna success Bootstrapped 9 packages
2018-08-03T21:33:23.1572133Z $ ts-node ./build/index.ts
2018-08-03T21:33:58.5218101Z Done in 41.54s.

Привет, ребята, у меня есть просьба к людям, которые следят за этой проблемой и используют частный реестр.

Мы рассматриваем возможность удаления имени хоста реестра из файла блокировки. Это упростило бы переключение с частного реестра на другой, но недостатком является то, что все реестры должны использовать аналогичные URL-адреса (поскольку имя хоста не будет частью URL-адреса, мы просто объединим его во время выполнения с активным конфигурация).

Не могли бы вы помочь нам подтвердить в # 5892, что этот рабочий процесс будет работать для вашего частного поставщика реестра (или сообщите нам, если нет)? Это поможет нам обрести уровень уверенности, необходимый для внесения этого изменения. Благодаря!

У меня также возникают проблемы с тем, что yarn publish не читает токен аутентификации из моего .npmrc . Я использую это на Ubuntu.

Версии

пряжа - 1.9.4
npm - 5.5.1

~ / .npmrc

Вот как выглядит мой ~/.npmrc (с запутанными токеном и реестром):

registry=http://myprivateregistry.net/
//myprivateregistry.net/:_authToken="myAuthToken"

Вывод

Когда я запускаю yarn publish --noninteractive , я получаю следующую ошибку:

yarn publish v1.9.4
[1/4] Bumping version...
info Current version: 2.1.3
[2/4] Logging in...
error No token found and can't prompt for login when running with --non-interactive.
info Visit https://yarnpkg.com/en/docs/cli/publish for documentation about this command.

Шаги отладки

Я безрезультатно пробовал следующее:

  • Копирование ~/.npmrc в локальный .npmrc в каталоге моего проекта
  • Запуск yarn login с моими учетными данными перед запуском yarn publish

Я также подтвердил, что запуск npm publish позволяет пройти этап аутентификации (он не работает на этапе управления версиями, потому что он не позволяет мне переопределить тот же номер версии. Вот почему я хочу использовать yarn publish --non-interactive , потому что он позволяет загружать, скажем, изменения README с тем же номером версии)

Что-то еще мне не хватает? Благодаря!

@ liuhelen10 Есть ли в вашем проекте файл .yarnrc ? Это сработало для меня с токеном, хранящимся внутри ~/.npmrc

пример

$ cat .yarnrc 
registry "https://registry.npmjs.org/"

always-auth = true в .npmrc сделали свое дело, больше не получая 401 при использовании Yarn.
Что не имеет смысла, но что угодно :)

об этом сообщалось в 2017 году, сейчас 2019 год, и эта проблема все еще существует.

Согласен, это все еще не работает.

.npmrc

always-auth=true
<strong i="7">@somename</strong>:registry=https://npm.pkg.github.com/
//npm.pkg.github.com/:_authToken=[token]

.yarnc

"<strong i="11">@somename</strong>:registry" "https://npm.pkg.github.com/"

Я также получаю сообщение об ошибке с npm.pkg.github.com:

Integrity checked failed (none of the specified algorithms are supported

Я также получаю сообщение об ошибке с npm.pkg.github.com:

Integrity checked failed (none of the specified algorithms are supported

И это тоже

У меня была такая же проблема с Nexus версии 3, но я решил использовать подход, упомянутый @plitex в этом выпуске https://github.com/yarnpkg/yarn/issues/3093#issuecomment -317671597.

Поместите это содержимое в файл .npmrc . Вам не нужно иметь никаких настроек в файле .yarnrc .

always-auth=true
registry=https://nexus.server.com/repository/npm-group/
//nexus.server.com/repository/npm-group/:_authToken={AUTH_TOKEN}

пряжа - версия
1.17.3

npm --version
6.10.2

@nbransby , @revmischa : Также ознакомьтесь с выпуском № 7552, возможно, в этом случае сообщение об ошибке правильное.

Мне помогли две вещи:

  1. всегда-auth = правда
  2. rm yarn.lock

Я начал получать эту ошибку на пряжи 1.19.1. Раньше эта пряжа, казалось, правильно собирала информацию о реестре и токене из .npmrc , но с 1.19.1 мне пришлось добавить конфигурацию registry в .yarnrc , иначе я только что получил 401 ошибку.

Как только это было сделано, он заработал и продолжил забирать токен из .npmrc . Мне кажется, что это регресс - нет никаких веских причин для репликации конфигурации реестра с .npmrc на .yarnrc .

Как и @rocketraman , как только я установил yarn 1.19.1, я начал сталкиваться с ошибками 401 при попытке установить пакеты с ограниченной областью видимости из частного реестра (нексуса). npm install отлично работает.

Пряжа пониженного качества и все снова работает:

curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.17.3

могу подтвердить, что это ВСЕ ЕЩЕ проблема

Получение ошибки 401 при запуске yarn install

Request "https://npm.pkg.github.com/user/@scope/package" finished with status code 401.

где npn install работает без проблем

Последние 2 часа я потратил на отладку этой проблемы и, благодаря моему другу @AndreiCalazans , у меня есть обходной путь.

Поделитесь здесь для всех, кто может бороться с подобным.

Пример использования

Я развертываю в Heroku проект, который использует рабочие области yarn . Даже если я отброшу yarn.lock и использую npm install , проект будет построен с рабочими пространствами и _не будет вообще_ без yarn .

Проект полагается на пакеты, размещенные на GitHub Packages, и должен пройти аутентификацию на GitHub с помощью токена.

Проблема

Heroku увидит yarn.lock и установит зависимости с помощью yarn , который проигнорирует файл ~/.npmrc который я создаю перед сборкой.

Предварительная сборка, я бы запустил

echo "always-auth=true\n//npm.pkg.github.com/:_authToken=${GITHUB_NPM_TOKEN}\" >> ~/.npmrc",

Это создает файл ~/.npmrc с таким содержимым:

always-auth=true
//npm.pkg.github.com/:_authToken=whatevermytokenis

yarn проигнорирует это и потерпит неудачу при попытке извлечь зависимость из реестра пакетов GitHub с помощью 401 Unauthorized .

Обходной путь

Андрей упомянул псевдонимы _ только организация_ для использования реестра GitHub и _ затем_ добавление токена реестра GitHub в.

По сути, немного изменив файл ~/.npmrc чтобы добавить следующее:

always-auth=true
+<strong i="36">@MY_ORG</strong>:registry=https://npm.pkg.github.com/

//npm.pkg.github.com/:_authToken=whatevermytokenis

Это решило все, и внезапно yarn использовал предоставленный токен аутентификации для npm.pkg.github.com для любых пакетов до @MY_ORG которые были организацией GitHub.

Ух! Я надеюсь, что это поможет кому-то! 💞

Это все еще проблема !! Установка NPM проходит без проблем, пряжа добавляется
error Couldn't find package "@diligentcorp/atlas-react" on the "npm" registry. info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

На моем компьютере с Windows проблема заключалась в том, что папка пользователя с файлом .npmrc моего уровня пользователя находилась на сетевом диске. В папке локального пользователя на машине не было файла .npmrc, но yarn, похоже, смотрит в эту папку. Копирование .npmrc с сетевого диска в локальную папку пользователя устранило проблему (токен аутентификации хранился в пользовательском уровне .npmrc).

Я обнаружил это случайно, набрав «cd ~» в моем git bash, и он переключился на удаленную домашнюю папку (которую я никогда не использую).

@TejasQ У меня не сработало

Я также использую пакеты GitHub.
По-прежнему получаю 401 unauthorized хотя он отлично работает с npm

Мне удалось заставить его работать с пряжей v1.22.0

.npmrc

always-auth=true
<strong i="7">@fortawesome</strong>:registry=https://npm.fontawesome.com
//npm.fontawesome.com/:_authToken=xyz-xyz-xyz-xyz

.yarnrc

"<strong i="11">@fortawesome</strong>:registry" "https://npm.fontawesome.com"

registry "https://some-regular-registry.org"

а затем выполните: yarn add @fortawesome/fontawesome-pro

Что касается меня, я надеялся, что смогу заставить его работать только с .npmrc , но он работает только при добавлении .yarnrc , поэтому нам нужно продублировать конфигурацию только для пряжи.

Я думаю, это то, с чем я сталкиваюсь. Он работает, когда .npmrc находится в домашнем каталоге, но не в каталоге проекта (необходимо для jenkins / travis).
https://github.com/yarnpkg/yarn/issues/8034

Это решило это для меня: https://github.com/yarnpkg/yarn/issues/4451#issuecomment -570691809

Убедитесь, что у вас нет /name после реестра при настройке области действия:

- <strong i="7">@4r7d3c0</strong>:registry=https://npm.pkg.github.com/4r7d3c0
+ <strong i="8">@4r7d3c0</strong>:registry=https://npm.pkg.github.com

Согласно документу registry=https://npm.pkg.github.com/OWNER , я упустил из виду, что владелец не должен присутствовать при настройке области. NPM могла справиться с этим, но yarn - нет.

Для тех, кто использует псевдонимы, проверьте этот обходной путь: https://github.com/yarnpkg/yarn/issues/8130#issuecomment -636281053

Пришлось разделить .npmrc уровне пользователя и .npmrc на уровне проекта, чтобы пряжа уважала токены пакетов GitHub. Ключевым моментом было перемещение именованных объявлений реестра с уровня пользователя на уровень проекта.

Содержимое ~/.npmrc

_auth=#####TOKEN_FOR_ARTIFACTORY#####
always-auth=true
registry=https://artifactory.mycompany.net/artifactory/api/npm/npm/
//npm.pkg.github.com/:_authToken=####GitHub_NPM_REGISTRY_TOKEN#####

Содержимое ~/projects/blah/.npmrc

<strong i="14">@mycompany</strong>:registry=https://npm.pkg.github.com

Пока я не переместил запись реестра семейных пакетов с именем ^ на уровень проекта .npmrc , yarn install давал мне 401 (для пакетов, размещенных на GH под @mycompany ).

Для сборки Docker монтируйте их отдельно:

base.Dockerfile :

# syntax=docker/dockerfile:1-experimental
## ^ need to enable --mount=type=secret support

ARG BASE_IMAGE
FROM ${BASE_IMAGE} as build

# note that only project-level .npmrc is copied
COPY package.json yarn.lock .npmrc ./

# ~/.npmrc with actual secrets is mounted as "secret" (does not stay in image)
RUN --mount=type=secret,id=npmrc,target=/root/.npmrc,required \
    yarn install --production --frozen-lockfile ...

Команда сборки Docker:

DOCKER_BUILDKIT=1 docker build \
        --build-arg BASE_IMAGE=$(BASE_IMAGE) \
        --secret id=npmrc,src="$(HOME)/.npmrc" \
        -t $(IMAGE_NAME):$(IMAGE_TAG) \
        -f base.Dockerfile .

_ (Обратите внимание, что мне НЕ нужно .yarnrc чтобы это работало, но я использую пряжу 1.17.3, поэтому для других версий все может быть иначе) _

Я немного покопался, и кажется, что пряжа использует неправильные учетные данные.

~ / .npmrc

//npm-old.visualon.de/npm/vo-npm/:_password=XXXXXX
//npm-old.visualon.de/npm/vo-npm/:username=kriese
//npm-old.visualon.de/npm/vo-npm/:always-auth=true

//npm-new.visualon.de/:_authToken="XXXXXX"

package.json

{
  "name": "yarn-auth",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "tslib": "^2.0.1",
    "moment": "2.20.1"
  }
}

yarn.lock

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


[email protected]:
  version "2.20.1"
  resolved "https://npm-old.visualon.de/npm/vo-npm/moment/-/moment-2.20.1.tgz#d6eb1a46cbcc14a2b2f9434112c1ff8907f313fd"
  integrity sha1-1usaRsvMFKKy+UNBEsH/iQfzE/0=

tslib@^2.0.1:
  version "2.0.1"
  resolved "https://npm-new.visualon.de/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e"
  integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==

При попытке установить yarn отправляет токен bearer с npm-new.visualon.de на npm-old.visualon.de . Таким образом, программа semms yarn сравнивает только базовый домен.

Если кто-то все еще сталкивается с этим, это то, что сработало для меня.

.npmrc:
always-auth=true
<strong i="6">@orgaccount</strong>:registry=https://npm.pkg.github.com
registry=https://registry.yarnpkg.com

https://npm.pkg.github.com/:_authToken=yyyyjjjjj3333888etc

Не уверен, сталкивается ли кто-нибудь с подобной проблемой, но, возможно, это поможет кому-то сэкономить немного времени:

Я использую Azure Artifacts в качестве частного реестра и настроил файлы PAT и .npmrc, как описано в них.
Тем не менее, я столкнулся с той же проблемой, что npm install работал отлично, но yarn install все время сталкивался с ошибкой 401.
После небольшой попытки и ошибки оказалось, что у меня есть специальный символ в моем URL-адресе реестра (... @ Local / ...), но Azure Artifacts разрешает это в представлении Unicode в своем руководстве по настройке. npm отлично справляется с этим, yarn - не очень. Установка фактического символа @ в URL-адресе решила мою проблему.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги