Yarn: `yarn add` pour le package étendu par rapport au registre privé avec des crédits pour le npm public échoue

Créé le 26 janv. 2017  ·  3Commentaires  ·  Source: yarnpkg/yarn

Le titre est un peu lourd. En d'autres termes : lorsque .npmrc (ou, vraisemblablement, .yarnrc ) sont configurés avec _à la fois_ une URL de registre privé _et_ un jeton d'authentification pour la publication sur npm public, l'installation des packages délimités est interrompue. Le registre privé en question ici est Artifactory, et la théorie en cours est que Yarn envoie les crédits (_inappropriablement_: la configuration est pour deux URL différentes), dont Artifactory n'est pas content, et 401s (puisque les crédits sont pour le npm public, pas Artificiel). Je ne sais pas pourquoi les packages délimités seraient traités différemment, car cela fonctionne bien autrement.

Voici quelques commandes pour illustrer :

> 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.

Commentaire le plus utile

Je pense que c'est la ligne de code incriminée : https://github.com/yarnpkg/yarn/blob/master/src/registries/npm-registry.js#L56 (la dernière clause).

En lisant le contexte, il semble que l'auteur suppose que « scoped » implique « authentifié ».

Tous les 3 commentaires

Pour plus d'informations, l'instance Artifactory est configurée pour autoriser un accès anonyme. Si vous ne fournissez aucune information d'identification, vous pouvez lire ce que vous voulez. Si vous fournissez des informations d'identification, Artifactory tente de les valider et renvoie le statut 401 (dans ce cas, car l'utilisateur n'existe pas.)

Je pense que c'est la ligne de code incriminée : https://github.com/yarnpkg/yarn/blob/master/src/registries/npm-registry.js#L56 (la dernière clause).

En lisant le contexte, il semble que l'auteur suppose que « scoped » implique « authentifié ».

J'ai eu exactement le même problème vendredi dernier, j'ai dû supprimer le jeton d'authentification de ~/.npmrc pour pouvoir télécharger le package étendu à partir de l'artefact local.

Cette page vous a été utile?
0 / 5 - 0 notes