Yarn: `yarn add` para pacote com escopo no registro privado com creds para falha npm pública

Criado em 26 jan. 2017  ·  3Comentários  ·  Fonte: yarnpkg/yarn

O título é um pouco complicado. Em mais palavras: quando .npmrc (ou, presumivelmente, .yarnrc ) são configurados com _both_ um URL de registro privado _and_ um token de autenticação para publicação em npm público, a instalação de pacotes com escopo é interrompida. O registro privado em questão aqui é Artifactory, e a teoria atual é que o Yarn está enviando os creds (_inadequadamente_: a configuração é para dois URLs diferentes), o que não agrada o Artifactory, e 401s (já que os creds são para npm públicos, não Artifactory). Não tenho certeza de por que os pacotes com escopo seriam tratados de forma diferente, visto que funciona bem de outra forma.

A seguir estão alguns comandos para ilustrar:

> pwd
~

> cat .yarnrc
cat: .yarnrc: No such file or directory

> cat .npmrc
registry=<private registry URL that works fine with npm and non-scoped packages>
//registry.npmjs.org/:_authToken=<my auth token>

> yarn add @types/d3-scale --verbose
yarn add v0.19.1
info No lockfile found.
verbose Performing "GET" request to "https://yarnpkg.com/latest-version".
[1/4] 🔍  Resolving packages...
verbose Performing "GET" request to "<correct private registry URL ...>/@types%2fd3-scale".
verbose Request "<correct private registry URL ...>/@types%2fd3-scale" finished with status code 401.
verbose Error: Couldn't find package "@types/d3-scale" on the "npm" registry.
    at MessageError (/usr/local/Cellar/yarn/0.19.1/libexec/lib/node_modules/yarn/lib/errors.js:8:5)
    at /usr/local/Cellar/yarn/0.19.1/libexec/lib/node_modules/yarn/lib/resolvers/registries/npm-resolver.js:207:15
    at next (native)
    at step (/usr/local/Cellar/yarn/0.19.1/libexec/lib/node_modules/yarn/node_modules/babel-runtime/helpers/asyncToGenerator.js:17:30)
    at /usr/local/Cellar/yarn/0.19.1/libexec/lib/node_modules/yarn/node_modules/babel-runtime/helpers/asyncToGenerator.js:28:13
    at process._tickCallback (internal/process/next_tick.js:103:7)
error Couldn't find package "@types/d3-scale" on the "npm" registry.
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

> npm install @types/d3-scale
~
└─┬ @types/[email protected] 
  └── @types/[email protected] 

> yarn add d3-scale          
yarn add v0.19.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 8 new dependencies.
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
├─ [email protected]
└─ [email protected]
✨  Done in 2.45s.

# edit .npmrc...

> cat .npmrc 
registry=<same registry URL>

> yarn add @types/d3-scale 
yarn add v0.19.1
warning No license field
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
success Saved lockfile.
success Saved 2 new dependencies.
├─ @types/[email protected]
└─ @types/[email protected]
warning No license field
✨  Done in 1.50s.

Comentários muito úteis

Acho que esta é a linha de código ofensiva: https://github.com/yarnpkg/yarn/blob/master/src/registries/npm-registry.js#L56 (a última cláusula).

Lendo no contexto, parece que o autor assume que "escopo" implica "autenticado".

Todos 3 comentários

Para obter mais informações, a instância do Artifactory é configurada para permitir acesso anônimo. Se você não fornecer credenciais, poderá ler o que quiser. Se você fornecer quaisquer credenciais, o Artifactory tentará validá-las e retornará o status 401 (neste caso, porque o usuário não existe).

Acho que esta é a linha de código ofensiva: https://github.com/yarnpkg/yarn/blob/master/src/registries/npm-registry.js#L56 (a última cláusula).

Lendo no contexto, parece que o autor assume que "escopo" implica "autenticado".

Tive exatamente o mesmo problema na sexta-feira passada, tive que remover o token de autenticação de ~ / .npmrc para poder baixar o pacote com escopo do artifactory local.

Esta página foi útil?
0 / 5 - 0 avaliações