Yarn: `yarn add` für bereichsbezogenes Paket gegen private Registry mit Creds für öffentliches npm schlägt fehl

Erstellt am 26. Jan. 2017  ·  3Kommentare  ·  Quelle: yarnpkg/yarn

Der Titel ist ein bisschen ein Hingucker. Mit anderen Worten: Wenn .npmrc (oder vermutlich .yarnrc ) mit _sowohl_ einer privaten Registrierungs-URL _und_ einem Auth-Token für die Veröffentlichung auf öffentlichem npm konfiguriert sind, bricht die Installation von bereichsbezogenen Paketen ab. Die fragliche private Registry ist hier Artifactory, und die gängige Theorie ist, dass Yarn die Creds sendet (_unangemessen_: die Konfiguration ist für zwei verschiedene URLs), worüber Artifactory nicht glücklich ist, und 401s (da die Creds für öffentliche npm sind, nicht Artifactory). Ich bin mir nicht sicher, warum bereichsbezogene Pakete anders behandelt werden, da es ansonsten gut funktioniert.

Es folgen einige Befehle zur Veranschaulichung:

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

Hilfreichster Kommentar

Ich denke, dies ist die beleidigende Codezeile: https://github.com/yarnpkg/yarn/blob/master/src/registries/npm-registry.js#L56 (die letzte Klausel).

Beim Lesen im Kontext scheint der Autor davon auszugehen, dass "Scoped" "authentifiziert" impliziert.

Alle 3 Kommentare

Für zusätzlichen Hintergrund ist die Artifactory-Instanz so konfiguriert, dass sie anonymen Zugriff zulässt. Wenn Sie keine Anmeldeinformationen angeben, können Sie lesen, was Sie möchten. Wenn Sie Anmeldeinformationen angeben, versucht Artifactory, diese zu validieren und gibt den Status 401 zurück (in diesem Fall, weil der Benutzer nicht existiert).

Ich denke, dies ist die beleidigende Codezeile: https://github.com/yarnpkg/yarn/blob/master/src/registries/npm-registry.js#L56 (die letzte Klausel).

Beim Lesen im Kontext scheint der Autor davon auszugehen, dass "Scoped" "authentifiziert" impliziert.

Hatte letzten Freitag genau das gleiche Problem, musste das Authentifizierungstoken aus ~/.npmrc entfernen, um das bereichsbezogene Paket von der lokalen Artifactory herunterladen zu können.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen