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