Yarn: `yarn add` para paquete con alcance contra registro privado con creds para npm público falla

Creado en 26 ene. 2017  ·  3Comentarios  ·  Fuente: yarnpkg/yarn

El título es un poco complicado. En más palabras: cuando .npmrc (o, presumiblemente, .yarnrc ) se configuran con _ambos_ una URL de registro privada _y_ un token de autenticación para publicar en npm público, la instalación de paquetes con ámbito se rompe. El registro privado en cuestión aquí es Artifactory, y la teoría actual es que Yarn está enviando los créditos (_inpropiadamente_: la configuración es para dos URL diferentes), con lo que Artifactory no está contento, y 401 (dado que los créditos son para npm público, no artefactorio). No estoy seguro de por qué los paquetes con ámbito se tratarían de manera diferente, ya que de lo contrario funciona bien.

A continuación se muestran algunos 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.

Comentario más útil

Creo que esta es la línea de código ofensiva: https://github.com/yarnpkg/yarn/blob/master/src/registries/npm-registry.js#L56 (la última cláusula).

Al leer en contexto, parece que el autor asume que "con alcance" implica "autenticado".

Todos 3 comentarios

Para obtener información adicional, la instancia de Artifactory está configurada para permitir el acceso anónimo. Si no proporciona credenciales, puede leer lo que quiera. Si proporciona credenciales, Artifactory intenta validarlas y devuelve el estado 401 (en este caso, porque el usuario no existe).

Creo que esta es la línea de código ofensiva: https://github.com/yarnpkg/yarn/blob/master/src/registries/npm-registry.js#L56 (la última cláusula).

Al leer en contexto, parece que el autor asume que "con alcance" implica "autenticado".

Tuve exactamente el mismo problema el viernes pasado, tuve que eliminar el token de autenticación de ~ / .npmrc para poder descargar el paquete con alcance desde el artefacto local.

¿Fue útil esta página
0 / 5 - 0 calificaciones