<p>yarn ne respecte pas les paramètres d'authentification dans .npmrc</p>

Créé le 14 sept. 2017  ·  86Commentaires  ·  Source: yarnpkg/yarn

Voulez-vous demander une fonctionnalité ou signaler un bogue ?
PUNAISE
Quel est le comportement actuel?
Yarn n'honore pas .npmrc
Si le comportement actuel est un bogue, veuillez fournir les étapes à reproduire.
Nous avons besoin d'une authentification pour l'un de nos référentiels et nous le faisions en spécifiant l'authentification dans .npmrc. Cela a fonctionné jusqu'à 0.28.4 mais a cassé en 1.0.0

Quel est le comportement attendu?
Respecter les paramètres d'authentification dans .npmrc

Veuillez mentionner votre node.js, votre fil et la version de votre système d'exploitation.
Cela se produit après la mise à niveau de fil vers 1.0.0 / 1.0.1 (j'ai essayé les deux versions). Indépendamment de la version du système d'exploitation et de nodejs.

cat-bug help wanted

Commentaire le plus utile

cela a été signalé en 2017, nous sommes en 2019 maintenant et ce problème existe toujours.

Tous les 86 commentaires

Cela devrait être corrigé dans la version 1.0.2 qui a été publiée hier. Pouvez-vous lui donner un tour?

@BYK Je rencontre les mêmes problèmes que ci-dessus et comme mentionné à la fin de # 4157. J'ai essayé d'exécuter 1.0.2 et j'ai échoué avec 404 . L'exécution sur 0.27.5 fonctionne comme prévu.

Pourriez-vous coller votre fichier npmrc ici afin que nous puissions essayer de le reproduire (évidemment, éditez les secrets ou d'autres informations privées)

@KidkArolis en essayant de rendre mon

Mesures que j'ai prises:

  • Supprimez yarn.lock et tous les fichiers yarn-error.log
  • Supprimer node_modules/
  • brew link yarn et yarn --version pour m'assurer que j'étais à 1.0.2
  • yarn

Cela semble avoir fonctionné. Je vais considérer cela comme une erreur d'utilisateur de la part de moi et de mon équipe.

@beardedtim Et si vous soufflez maintenant node_modules mais gardez yarn.lock puis exécutez yarn install ? Est-ce que tout fonctionne alors? C'est en partie ce que les pistes # 4157, mais cela peut être lié au problème plus large à portée de main?

Je rencontre ce problème (404 sur le repo privé, quel que soit le registre que j'utilise) pour les versions de fil 1.0.1 et 1.0.2. La version 0.27.5 fonctionnait après avoir effacé certains artefacts.

J'ai essayé toutes les solutions de contournement décrites dans https://github.com/yarnpkg/yarn/issues/4157. Heureux de publier des journaux si cela peut vous aider.

@stieg J'essaierai ça plus tard aujourd'hui quand j'aurai un moment libre autour du déjeuner et posterai les résultats. Je crois que j'ai toujours l'erreur 404 mais j'ai essayé tellement de choses à ce stade, qui sait!

Quelqu'un a-t-il trouvé une solution à cela?

FWIW: J'ai essayé avec:

  • Essuyage de mon node_modules
  • Essuyage ~/.yarn
  • curl -o- -L https://yarnpkg.com/install.sh | bash pour réinstaller yarn 1.0.2
  • yarn install - _aucune erreur_, il a tout installé parfaitement.

Mon ~/.yarnrc :

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


registry "https://registry.npmjs.org"
email [email protected]
lastUpdateCheck 1505977814820
username some-user
````

And my `~/.npmrc`:

//registry.npmjs.org/:_authToken=a-valid-uuid


The `yarn.lock` references look like this in my particular case:

résolu " https://registry.npmjs.org/@acme/some -module / - / some-module-0.1.1.tgz # valid-git-sha"
''

Intéressant. Après avoir mis le registre dans mon fichier .yarnrc , j'ai pu installer mes packages. Cependant, je l'ai supprimé pour vérifier si c'était le coupable, et cela fonctionnait toujours (j'ai supprimé mon cache, donc Yarn a dû le télécharger, et il a réussi à le faire correctement).

J'ai essayé une nouvelle installation (Debian cette fois, l'autre était macOS) et avoir ces paramètres dans ~/.npmrc et ~/.yarnrc fonctionnait également bien là-bas. (Remarque: je n'ai pas essayé npm login ou yarn login .)

La fermeture en tant que personnes signalant ce problème a été résolue. Rouvrir avec des étapes de reproduction concrètes si cela n'est pas résolu pour vous @carlosduclos s'il vous plaît.

@BYK J'ai eu le même problème.
J'ai utilisé l'installation propre de la dernière version de fil.
Et cela commence à fonctionner après avoir ajouté registry "https://registry.npmjs.org" à ~/.yarnrc .
Je pense que c'est un bug et qu'il devrait être résolu automatiquement, pas manuellement, comme nous l'avons fait.

@BYK Il peut être utile de noter que tous ceux qui ont "signalé comme résolu" ont utilisé la solution de contournement consistant à forcer le fil à utiliser le registre https://registry.npmjs.org .

Cependant, je pense qu'il y a toujours un problème pour récupérer des packages privés à partir du registre https://registry.yarnpkg.com , et il s'agit du registre par défaut utilisé par yarn (est-ce toujours juste un proxy inverse ? Peut-être qu'il ne respecte pas les en-têtes d'authentification? ).

Etapes de reproduction du béton

  1. Supprimez / déplacez vos fichiers .npmrc et .yarnrc pour que yarn utilise la configuration par défaut.
  2. Recherchez un package publié en privé dans le registre npm.
    1a. Si vous l'avez téléchargé / publié à partir de la même machine sur laquelle vous testez le fil, effacez les caches npm et yarn.
  3. Exécutez npm login ou yarn login pour remplir le jeton d'authentification.
  4. En utilisant n'importe quelle version de yarn après 0.27.5 , essayez d'installer ce package.
Résultats attendus

Le package s'installe avec succès.

Résultats actuels
❤ <strong i="26">@up</strong> ➜  REPO git:(master) ★ yarn add @SCOPE/PACKAGE 
yarn add v1.1.0
info No lockfile found.
[1/5] Validating package.json...
[2/5] Resolving packages...
error An unexpected error occurred: "https://registry.npmjs.org/@SCOPE%2fPACKAGE: Not found".
info If you think this is a bug, please open a bug report with the information provided in "/home/katy/dev/REPO/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

Si les responsables du projet trouvent que les instructions de

Je suis d'accord avec @kmoe , le problème sous-jacent n'est pas résolu même dans les versions récentes de fil. Veuillez rouvrir le problème. Oui, nous avons une solution de contournement, mais solution de contournement! = Solution dans ce cas.

FWIW, c'est toujours un problème dans la version 1.1.0. Je viens de le vérifier (je suis revenu ici pour la solution de contournement, à savoir registry "https://registry.npmjs.org" ajouté à ~/.yarnrc )

J'ai ce problème dans le fil 1.3.2 et cela brise nos builds en ce moment. Cela a bien fonctionné sur le fil 0.27.5.

Nous avons besoin d'un jeton d'authentification du fichier .npmrc pour installer les packages de notre registre privé Artifactory.

Étapes de reproduction:

  1. Avoir un fichier .npmrc avec des informations d'authentification comme:
registry=https://artifactory.mycompany.com/artifactory/api/npm/npm-virtual
_auth = myAuthTokenHere
always-auth = true
email = [email protected]
  1. Exécutez yarn install
  2. Obtenez une erreur HTTP 401 lorsque yarn tente d'installer des éléments à partir du registre privé:
error An unexpected error occurred: "https://artifactory.mycompany.com/api/npm/npm-virtual/@angular/compiler/-/compiler-4.3.1.tgz: Request failed \"401 Unauthorized\"".

Connexes: # 4672

@stewx J'ai également le même problème sur 1.3.2. Avez-vous trouvé une solution ou un moyen de contourner le problème?

@jamesone Non, j'ai rétrogradé à quelque chose comme 0.27. C'est un facteur décisif pour notre projet.

@stewx @jamesone
Ajoutez registry "https://registry.npmjs.org" dans votre .yarnrc et réinstallez les paquets privés
Cela dira à Yarn de travailler directement avec le registre npmjs et cela résoudra le problème

Il semble tellement faux de verrouiller la version à 0.27.5 juste pour contourner ce problème, mais il semble que beaucoup font exactement cela _ou_ redirigeant registry config (bien que @stewx rapporte que cela ne résout pas pour l'auto-hébergé registres privés).

Si les contributeurs fréquents au projet n'ont pas le temps de résoudre ce problème à court terme, quelqu'un serait-il prêt à suggérer un ou plusieurs emplacements de base de code où un correctif est le plus susceptible de réussir, dans l'espoir qu'un PR communautaire soit ouvert? 🤔

/ cc @kittens @bestander @BYK @arcanis @ rally25rs @kaylieEB

@Bnaya Quand vous dites réinstaller, voulez-vous dire supprimer node_modules dans votre projet ou effacer le cache de fils?

fil retirez votre emballage privé; fil ajouter votre paquet privé

Et dans le fichier de verrouillage, vous verrez https://registry.npmjs.org/*** url et non https://registry.yarnpkg ***

Je suggérerais d'ajouter le .yarnrc à côté de votre package.json

En fait, je l'ai fait fonctionner en mettant registry "https://registry.npmjs.org" dans ~/.yarnrc , c'est-à-dire pas besoin d'un package local .yarnrc .

Étapes pour reproduire l'erreur pour moi:

  • n'ont pas de ~/.yarnrc modifié
  • créer un nouveau projet
  • cache de fil propre
  • yarn add privatemodule -> échouer

Si je modifie ~/.yarnrc comme mentionné ci-dessus, les étapes ne créent pas d'erreur.

Si je regarde certains de mes projets où il y a des échecs, je vois que yarn.lock contient https://registry.yarnpkg.com/@myscope/mypackage/ . Pour que ces projets fonctionnent, je dois supprimer yarn.lock et le régénérer, après avoir effectué la mise à jour vers ./.yarnrc .

Cela semble expliquer pourquoi certaines personnes ont encore des erreurs même lorsqu'elles essaient quelque chose qui fonctionne pour d'autres.

Comment résoudre en conclusion:

  • ajouter registry "https://registry.npmjs.org" à ~ / .yarnrc
  • supprimer et régénérer yarn.lock cas d'échec des projets

@TheLudd Régénérer yarn.lock à partir de zéro encontre de son objectif.

Au lieu de cela, les responsables du projet peuvent envisager de rechercher / remplacer de yarnpkg.com à npmjs.org , en préservant l'état actuel de leur fichier de verrouillage.

@awkaiser Eh bien, tant que vos tests réussissent, vous pouvez le valider et tous les autres collaborateurs auront le même environnement que vous. Donc pas vraiment vaincre son objectif IMO.
Mais oui, vous pouvez également rechercher remplacer.

Mais la règle est aussi que vous ne devez pas modifier manuellement yarn.lock;)

S'il était toujours sûr d'extraire les derniers packages absolus qui satisfont nos exigences package.json , nous n'aurions pas du tout besoin de fichiers de verrouillage. 😜

Normalement, oui, nous ne devrions pas modifier yarn.lock à la main mais ceci, étant un bogue, prend en charge une exception à cette règle. La mise à jour de la référence de l'emplacement du registre avec une recherche et un remplacement doit être simple et sûre. 🍻

Je n'avais pas besoin de régénérer tout mon fichier de verrouillage.
Juste pour supprimer et installer les packages privés

@awkaiser ou n'importe qui d'autre sur le fil - une façon d'aider est de créer un exemple reproductible. Par exemple, basez-le sur ce repo https://github.com/KidkArolis/yarn-scopes-issue. Si vous pouvez produire un dépôt où l'exécution de yarn échoue (réponse de registre spécifique, configuration de fil spécifique, package.json spécifique, etc.) - je pourrais alors certainement jeter un coup d'œil à la résolution du problème.

Généralement:

  1. Vous n'avez pas besoin .yarnrc fichier
  2. Vous n'avez pas besoin de .yarnrc pour contenir registry "https://registry.npmjs.org"
  3. Les modules privés de registry.npmjs.org devraient fonctionner
  4. Les modules privés à partir de custom.registry.org devraient fonctionner

@KidkArolis les échecs sont aléatoires. mais ils sont là.
Comme je l'ai écrit sur un autre problème connexe: c'est ou un problème avec le registre de fil (peut-être des échecs de mise en cache, un mauvais en-tête Vary sur le proxy, quoi qu'il arrive), ou un cas de bord complexe à l'intérieur du fil qui se produit uniquement avec le registre de fil.

Ce que @kmoe a écrit le 25 sept. 2017 est-il insuffisant? 🤔

Cela a incité la réouverture de ce numéro, impliquant la reproduction par le (s) contributeur (s).

@KidkArolis Je ne sais pas comment je peux créer un exemple reproductible dans un référentiel car cela concerne les modules privés et dépend donc de qui dirige le fil, non? Mais mes étapes pour reproduire l'erreur sont ici https://github.com/yarnpkg/yarn/issues/4451#issuecomment -355248563 et ce que @kmoe a écrit est également suffisant.

Lorsque j'essaye d'installer un package privé sans modifier .yarnrc l'erreur que je reçois commence par

Une erreur inattendue s'est produite: " https://registry.yarnpkg.com

Cela implique qu'il regarde dans le registre des fils et non dans npm. N'est-ce pas l'erreur à l'origine de ce bogue?

Ok, merci d'avoir refait surface ces étapes de reproduction. Je vais essayer de jeter un œil.

Pour une raison quelconque, l'ajout de cet emplacement explicite à .npmrc pour savoir où trouver mes paquets privés a empêché l'erreur 404 de se produire sur tous les dépôts dans lesquels cela posait un problème.

@npm-username:registry=https://registry.yarnpkg.com/

Quelqu'un a-t-il un package npm privé auquel il pourrait m'ajouter? Nom d'utilisateur: kidkarolis .

J'ai du mal à obtenir un compte payant, leur système de facturation / compte ne semble pas fonctionner pour moi ATM (je reçois 402 Payment Required même s'ils m'ont facturé: - "). Donc, pendant que j'attends les npm support, si quelqu'un m'ajoute à un package privé (si c'est même possible), cela accélérerait les choses.

Ok, je pense que c'était juste… cohérence éventuelle, mon compte privé npm fonctionne maintenant.

Cependant, je ne peux pas encore reproduire le problème :(

J'ai suivi les étapes fournies par @kmoe :

  1. rm ~/.yarnrc && rm ~/.npmrc
  2. yarn cache clean && npm cache clean --force
  3. npm login
  4. yarn add @scope/pkg

Il s'installe bien (et pas si je ne le fais pas npm login ). En d'autres termes - fonctionne comme prévu pour moi.

Et à en juger par yarn.lock, mon installation passe par https://registry.yarnpkg.com et semble utiliser auth comme prévu. Se pourrait-il qu'il y ait eu un problème sur le serveur dans le passé, mais qu'il est maintenant résolu?

Ok, je pense reproduit quelque chose.

Si j'ajoute <strong i="6">@qubit</strong>:registry=https://registry.npmjs.org/ à .npmrc - l'installation ne fonctionne plus.
Je pense que cette ligne est ajoutée si vous vous connectez avec npm login --scope=@qubit et qu'elle n'est pas ajoutée si vous vous connectez avec seulement npm login . Voyons comment résoudre ce problème ensuite.

@KidkArol est une autre façon courante de définir cette configuration:

npm config set <strong i="8">@qubit</strong>:registry https://registry.npmjs.org

Ouverture d'un PR - # 5162 feedback (ou même QA) bienvenue.

@KidkArolis Merci pour le PR. Mais je pense que le problème ne réside pas seulement dans le cas "--scope", mais dans un cas plus général où un dépôt privé reflète également les packages publics avec auth.

Au fait, @ bytheway875 , votre astuce https://registry.yarnpkg.com/ comme registre a fonctionné pour moi.

Ma situation:

  • Objectif: installer des packages privés avec yarn depuis une organisation (@ org-name) sur npmjs.com en utilisant un fichier authToken dans .npmrc fichier npm .
  • fonctionne avec npm
  • aucun problème sur la machine de développement (mac), je peux npm login et yarn fonctionne juste OU je peux être déconnecté de npm mais créer manuellement un fichier local / HOME .npmrc avec une seule ligne: //registry.npmjs.org/:_authToken=token et yarn fonctionne juste (cette deuxième méthode pourrait fonctionner à cause du cache local, je n'ai pas essayé d'effacer cela)
  • .yarnrc astuce ci-dessus n'a pas fonctionné

_La seule façon de faire fonctionner cela est de créer le fichier local .npmrc ci-dessous avant d'exécuter yarn install dans CI: _

@org-name:registry=https://registry.yarnpkg.com/
always-auth=true
_authToken=token

J'ai eu un problème similaire avec le fichier .npmrc . Tout ce que j'avais à faire est de définir le codage du fichier .npmrc en ANSI (sous Windows, vous pouvez utiliser notepad.exe> ​​Enregistrer sous ...).
Vous pouvez tester comment yarn voit le contenu de votre fichier .npmrc en utilisant yarn config list

Je n'arrive pas à faire fonctionner cela avec v1.4.1 . J'ai un repo privé Nexus et je l'utilise comme cache / proxy ( comme celui-ci ). Je n'arrive pas à trouver des instructions définitives, il est donc possible que je fasse quelque chose de mal. J'ai saisi la syntaxe yarn config ici et la yarn login ici .

Edit : J'aurais dû mentionner que j'ai d'abord essayé de me connecter via NPM pour obtenir le .npmrc avant d'essayer avec yarn .

Voici exactement ce que je fais pour tester.

Vérifier la validation de fusion (dc705768)

git tag --contains dc705768
v1.4.0
v1.4.1

Installer

Créez un Dockerfile pour fournir un environnement de référence cohérent pour les tests.

# Build
#  docker build -t yarn-private-registry-test .
# Run
#  docker run -it --rm yarn-private-registry-test

FROM debian:9.3-slim

WORKDIR /projects

RUN apt-get update \
  && apt-get --yes install curl gnupg \
  && curl -sL https://deb.nodesource.com/setup_8.x | bash - \
  && apt-get install --yes nodejs \
  && curl -OL https://github.com/yarnpkg/yarn/releases/download/v1.4.1/yarn_1.4.1_all.deb \
  && find . -name yarn*.deb -exec dpkg --install {} \; \
  && find . -name yarn*.deb -exec rm {} \;

Créer une image Docker

docker build -t yarn-private-registry-test .

Fil d'essai

Astuce : continuez à quitter et à redémarrer le conteneur Docker pour obtenir un environnement propre.

Pas de configuration

Assurez-vous que l'environnement fonctionne en initialisant un projet et en ajoutant une dépendance sans apporter de modifications de configuration.

Exécuter le conteneur Docker

docker run -it --rm yarn-private-registry-test

Tester

Ajoutez la dépendance left-pad .

mkdir yarn \
  && cd yarn \
  && yarn init --yes \
  && yarn add left-pad
yarn init v1.4.1
warning The yes flag has been set [...snip...]
success Saved package.json
Done in 0.03s.
yarn add v1.4.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 1 new dependency.
└─ [email protected]
Done in 0.52s.

Configuration du registre privé

Exécuter le conteneur Docker

docker run -it --rm yarn-private-registry-test

Tester

mkdir yarn \
  && cd yarn \
  && yarn init --yes \
  && yarn config set registry https://example.com/repository/npm-group/ \
  && yarn login
yarn init v1.4.1
warning The yes flag has been set [...snip...]
success Saved package.json
Done in 0.03s.
yarn config v1.4.1
success Set "registry" to "https://example.com/repository/npm-group/".
Done in 0.04s.
yarn login v1.4.1
question npm username: myusername
question npm email: [email protected]
Done in 6.25s.

Ajoutez la dépendance left-pad .

yarn --verbose add left-pad
yarn add v1.4.1
verbose 0.349 Checking for configuration file "/projects/yarn/.npmrc".
verbose 0.35 Checking for configuration file "/usr/local/share/.npmrc".
verbose 0.35 Checking for configuration file "/usr/etc/npmrc".
verbose 0.352 Checking for configuration file "/root/.npmrc".
verbose 0.353 Checking for configuration file "/projects/yarn/.npmrc".
verbose 0.353 Checking for configuration file "/projects/.npmrc".
verbose 0.355 Checking for configuration file "/projects/yarn/.yarnrc".
verbose 0.355 Checking for configuration file "/usr/local/share/.yarnrc".
verbose 0.357 Found configuration file "/usr/local/share/.yarnrc".
verbose 0.358 Checking for configuration file "/usr/etc/yarnrc".
verbose 0.358 Checking for configuration file "/root/.yarnrc".
verbose 0.359 Checking for configuration file "/projects/yarn/.yarnrc".
verbose 0.359 Checking for configuration file "/projects/.yarnrc".
verbose 0.365 current time: 2018-01-25T21:55:48.886Z
info No lockfile found.
verbose 0.405 Performing "GET" request to "https://yarnpkg.com/latest-version".
[1/4] Resolving packages...
verbose 0.48 Performing "GET" request to "https://example.com/repository/npm-group/left-pad".
verbose 0.52 Request "https://example.com/repository/npm-group/left-pad" finished with status code 401.
verbose 0.522 Error: Couldn't find package "left-pad" on the "npm" registry.
    at new MessageError (/usr/share/yarn/lib/cli.js:186:110)
    at NpmResolver.<anonymous> (/usr/share/yarn/lib/cli.js:50354:15)
    at Generator.next (<anonymous>)
    at step (/usr/share/yarn/lib/cli.js:98:30)
    at /usr/share/yarn/lib/cli.js:109:13
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
error An unexpected error occurred: "Couldn't find package \"left-pad\" on the \"npm\" registry.".
info If you think this is a bug, please open a bug report with the information provided in "/projects/yarn/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
verbose 0.809 Request "https://yarnpkg.com/latest-version" finished with status code 200.

Chèque .yarnrc

cat /usr/local/share/.yarnrc
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


registry "https://example.com/repository/npm-group/"
email [email protected]
lastUpdateCheck 1516917349331
username myusername

Tester NPM

Passez directement à la configuration souhaitée car cela fonctionne.

Configuration du registre privé

Exécuter le conteneur Docker

docker run -it --rm yarn-private-registry-test

Tester

mkdir npm \
  && cd npm \
  && npm init --yes \
  && npm config set registry https://example.com/repository/npm-group/ \
  && npm login
Wrote to /projects/npm/package.json:

{
  "name": "npm",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}


Username: myusername
Password:
Email: (this IS public) [email protected]
Logged in as myusername on https://example.com/repository/npm-group/.

Ajoutez left-pad dépendance

npm --verbose install left-pad
npm info it worked if it ends with ok
npm verb cli [ '/usr/bin/node',
npm verb cli   '/usr/bin/npm',
npm verb cli   '--verbose',
npm verb cli   'install',
npm verb cli   'left-pad' ]
npm info using [email protected]
npm info using [email protected]
npm verb npm-session 0ed36c84804378c8
npm http fetch GET 200 https://example.com/repository/npm-group/left-pad 78ms
npm http fetch GET 200 https://example.com/repository/npm-group/left-pad/-/left-pad-1.2.0.tgz 28ms
npm verb correctMkdir /root/.npm/_locks correctMkdir not in flight; initializing
npm verb makeDirectory /root/.npm/_locks creation not in flight; initializing
npm verb lock using /root/.npm/_locks/staging-2f9f45630e5bbb1a.lock for /projects/npm/node_modules/.staging
npm info lifecycle [email protected]~preinstall: [email protected]
npm info linkStuff [email protected]
npm verb linkBins [email protected]
npm verb linkMans [email protected]
npm info lifecycle [email protected]~install: [email protected]
npm info lifecycle [email protected]~postinstall: [email protected]
npm verb unlock done using /root/.npm/_locks/staging-2f9f45630e5bbb1a.lock for /projects/npm/node_modules/.staging
npm verb saving [ { name: 'left-pad', spec: '^1.2.0', save: 'dependencies' } ]
npm info lifecycle undefined~preshrinkwrap: undefined
npm info lifecycle undefined~shrinkwrap: undefined
npm notice created a lockfile as package-lock.json. You should commit this file.
npm info lifecycle undefined~postshrinkwrap: undefined
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

+ [email protected]
added 1 package in 0.398s
npm verb exit [ 0, true ]
npm info

@ryanjaeb Merci pour le rapport détaillé. La seule chose qui me manque pour vous dire ce qui ne va pas ici est le contenu des fichiers ~/.npmrc et ~/.yarnrc . Vous avez collé votre .yarnrc , mais il ne contient pas de mot de passe. De plus, sans le fichier .npmrc des fins de comparaison, il est difficile de cerner le problème.

Votre cas d'utilisation devrait fonctionner correctement dans ^ 1.4.0, mais tout dépend de l'aspect du fichier de configuration.

Tbh avec vous, je n'utilise jamais yarn login , je commence par npm login puis j'utilise yarn . Dans l'exemple ci-dessus, si vous faites d'abord npm set config registry ... && npm login , puis exécutez add left-pad - ça marche? Si npm fonctionne, il devrait en être de même pour le fil. Je me demande donc si la commande yarn login est ce qui est cassé.

@KidkArolis En ignorant yarn login et en espérant pouvoir le faire fonctionner avec seulement npm login , j'ai pu faire des progrès. Je vois deux choses.

.npmrc

Les documents pour npm-login ne semblent pas correspondre à ce que je vois réellement dans .npmrc . Plus précisément, l' argument --always-auth pour la commande npm login n'a aucun impact sur la configuration, même si la documentation dit:

Peut être utilisé avec --registry et / ou --scope, par ex.
...
La configuration de always-auth spécifique au registre est prioritaire sur toute configuration globale.

Cependant, que j'utilise ou non cet argument, je me retrouve toujours avec le même .npmrc . Tous les deux:

npm config set registry https://example.com/repository/npm-group/ \
  && npm login --registry=https://example.com/repository/npm-group/

et

npm config set registry https://example.com/repository/npm-group/ \
  && npm login --registry=https://example.com/repository/npm-group/ --always-auth

produire ceci .npmrc :

registry=https://example.com/repository/npm-group/
//example.com/repository/npm-group/:_authToken=NpmToken.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Renifler le trafic allant à mon registre montre que NPM envoie le jeton d'authentification indépendamment:

GET /repository/npm-group/left-pad HTTP/1.1
Host: example.com
user-agent: npm/5.6.0 node/v8.9.4 linux x64
npm-in-ci: false
npm-scope: 
npm-session: c4c14c0b37be7bd5
referer: install left-pad
pacote-req-type: packument
pacote-pkg-id: registry:manifest
accept: application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*
authorization: Bearer NpmToken.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
accept-encoding: gzip,deflate
X-Forwarded-Proto: https
X-Forwarded-For: 10.10.10.1
X-Forwarded-Host: example.com
X-Forwarded-Server: example.com
Connection: Keep-Alive

Yarn n'envoie pas le jeton sauf si always-auth est défini. La définition explicite du drapeau always-auth dans .npmrc fait que tout fonctionne comme prévu.

npm config set always-auth true \
    && cat ~/.npmrc
registry=https://example.com/repository/npm-group/
//example.com/repository/npm-group/:_authToken=NpmToken.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
always-auth=true

Au-delà de savoir que le comportement entre NPM et Yarn diffère, je ne suis pas assez familier avec l'un ou l'autre pour savoir quel comportement est correct.

yarn login

Je pense que vous avez peut-être raison sur le fait que yarn login ne fonctionne pas, mais je ne l'ai pas testé de manière approfondie. Ignorant .npmrc et n'utilisant que yarn , j'essaye d'imiter la configuration NPM.

yarn config set registry https://example.com/repository/npm-group/ \
    && yarn config set always-auth true \
    && yarn login

.yarnrc :

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


registry "https://example.com/repository/npm-group/"
always-auth true
email [email protected]
lastUpdateCheck 1517883362958
username myusername

Quoi que je fasse, je ne suis jamais invité à entrer mon mot de passe.

@KidkArolis Pour moi, npm fonctionne sans always-auth=true explicite dans .npmrc et yarn (1.3.2 ou 1.4.0) ne le fait pas. Dans mon cas, j'essaie de pointer toutes les demandes vers le registre virtuel en artificiel. Avec always-auth=true et authToken dans .npmrc - cela fonctionne dans 1.3.2 , donc pas clair ce qui a été exactement corrigé dans 1.4.0 .

Cela semble toujours être un problème, en particulier lors de la connexion à notre repo Nexus.

J'ai essayé plusieurs approches:

  1. Suppression complète de mon ~/.yarnrc et ne se fiant qu'à ce qui se trouve dans ~/.npmrc .
  2. Débarrassez-vous des paramètres de registre dans ~/.yarnrc .

Il semble que le fil n'utilise pas la _auth hachée _auth=xyz ) de ~/.npmrc

Informations sur la version

NPM

npm --version                                                                                                                                                                                                                                                                                                      
5.6.0

Fil

yarn --version
1.5.1

Fonctionnant sous OS X 10.13.2.

NPMRC

Mon ~/.npmrc ressemble à ceci (certains paramètres _values_ sont omis pour des raisons évidentes):

registry=http://nexus-repo:8081/content/repositories/npm-all
init.author.name=Juan Smith
[email protected]
init.author.url=http://nexus-repo:8081/content/repositories/npm/
[email protected]
_auth=BASE64-HASH-USERNAME-PASSWORD
always-auth=true

YARNRC

Mon ~/.yarnrc ressemble à ceci (encore une fois les valeurs évidentes omises):

registry "http://nexus-repo:8081/content/repositories/npm-all//"
email [email protected]
lastUpdateCheck 1521495247797
username jsmith

¯_ (ツ) _ / ¯

Je ne sais pas vraiment où aller à partir d'ici. Ce qui se passe n'est pas tout à fait clair, à part que toutes les constructions de fils échouent de la manière suivante:

error An unexpected error occurred: "http://nexus-repo:8081/content/groups/npm-all/lru-cache/-/lru-cache-4.1.2.tgz: Request failed \"401 Unauthorized\"".

FWIW, IANADOE (je ne suis pas un ingénieur Dev Ops) et j'essaie simplement d'utiliser un package qui s'appuie sur le fil pour les constructions d'électrons. Cela pourrait simplement être que je ne sache pas comment définir le hachage base64 username | password pour yarn. Je n'ai pas été en mesure de trouver des documents expliquant cela.

@ezweave Sonatype a une très bonne documentation . Ce lien contient également des instructions de test pour vous assurer que vous effectuez correctement l'encodage base64. Personnellement, je trouve qu'il est plus facile d'activer le royaume de jetons support npm dans Nexus et d'utiliser npm login sur mon poste de travail. Ex:

npm config set registry http://nexus-repo:8081/content/repositories/npm-all
npm login --registry=http://nexus-repo:8081/content/repositories/npm-all --always-auth
npm config set always-auth true

Assurez-vous qu'il fonctionne avec NPM avant d'essayer Yarn. Je ne sais pas si cela compte, mais vous avez deux barres obliques ( // ) sur le registre .yarnrc .

@ryanjaeb donc, notre équipe devops a verrouillé Nexus pour _seulement_ prendre en charge le royaume LDAP. Cela peut être le cœur du problème, mais il existe de nombreux outils qui reposent sur yarn que je ne peux pas utiliser car cela ne semble pas pris en charge. J'ai essayé d'ajouter _auth tant que paramètre dans la syntaxe appropriée, et cetera. Rien ne semble fonctionner. (FWIW: les multiples barres obliques étaient une solution supposée pour un problème lié, je l'ai fait avec et sans sans succès.)

Peut confirmer que l'authentification de Yarn est rompue avec Nexus. yarn login ne demande pas de mot de passe mais dit qu'il s'est connecté avec succès (ce n'est pas le cas - aucune modification du fichier rc),

Publish demande le mot de passe et publie mais il ne lit jamais à partir du jeton __auth où qu'il soit défini, vous devez vous connecter à chaque fois. Et vous ne pouvez pas non plus utiliser de fil dans un scénario CI.

le fil ne fonctionne pas dans CI. Cela fonctionnera-t-il jamais?

Ce problème aurait dû être résolu par https://github.com/yarnpkg/yarn/pull/5216. Ce PR avait une description contenant ceci:

Fixes #4157, #4451, #4672, #4119.

et cela a amené GitHub à ne fermer automatiquement # 4157 que lorsque ce PR a été fusionné. Les autres problèmes auraient probablement dû être fermés également.

@valscion cela pourrait aider davantage avec ces problèmes - https://github.com/yarnpkg/yarn/pull/5322 , mais cela a glissé entre les mailles du filet.

L'ajout d'un autre point de données - yarn 1.8.x + échoue sur mon agent de construction (VSTS). Le retour UNIQUEMENT de yarn à 1.7.x résout le problème. Il regarde le registre correct, mais n'utilise pas les jetons qui sont injectés dans le .npmrc par l'agent de construction. Je me rends compte qu'il y a beaucoup de variables ici, mais j'ai pensé que cela pourrait être utile.

Exécuter la version 1.9.x localement, où les jetons sont enregistrés dans mon utilisateur .npmrc , fonctionne bien.

Version 1.9.x

2018-08-03T21:17:04.9324575Z [command]C:\Windows\system32\cmd.exe /D /S /C "C:\Builds\_tool\yarn\1.9.4\x64\yarn-v1.9.4\bin\yarn.cmd build"
2018-08-03T21:17:05.4481355Z yarn run v1.9.4
2018-08-03T21:17:05.5418442Z $ lerna clean && lerna bootstrap
2018-08-03T21:17:08.3387809Z lerna info version 2.11.0
2018-08-03T21:17:08.3387809Z lerna info versioning independent
2018-08-03T21:17:08.3856545Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.3856545Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.3856545Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.3856545Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.4012821Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.4012821Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.4169058Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.4325326Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.4325326Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.7606628Z lerna success clean finished
2018-08-03T21:17:09.5145894Z lerna info version 2.11.0
2018-08-03T21:17:09.5145894Z lerna info versioning independent
2018-08-03T21:17:09.5419287Z lerna info Bootstrapping 9 packages
2018-08-03T21:17:09.5419287Z lerna info lifecycle preinstall
2018-08-03T21:17:09.5576221Z lerna info Installing external dependencies
2018-08-03T21:17:12.8857424Z lerna ERR! execute callback with error
2018-08-03T21:17:12.8857424Z lerna ERR! Error: Command failed: yarn install --mutex network:42424 --non-interactive
2018-08-03T21:17:12.8857424Z lerna ERR! warning package.json: No license field
2018-08-03T21:17:12.8857424Z lerna ERR! warning Waiting for the other yarn instance to finish (4048)
2018-08-03T21:17:12.8857424Z lerna ERR! warning Waiting for the other yarn instance to finish (6896)
2018-08-03T21:17:12.8857424Z lerna ERR! warning No license field
2018-08-03T21:17:12.8857424Z lerna ERR! error An unexpected error occurred: "<INTERNAL_REGISTRY>/lodash.foreach/-/lodash.foreach-2.3.0.tgz: Request failed \"401 Unauthorized\"".
2018-08-03T21:17:12.8857424Z lerna ERR! [1/4] Resolving packages...
2018-08-03T21:17:12.8857424Z lerna ERR! [2/4] Fetching packages...
2018-08-03T21:17:12.8857424Z lerna ERR! info If you think this is a bug, please open a bug report with the information provided in "C:\\Builds\\6\\s\\packages\\<REMOVED>\\yarn-error.log".
2018-08-03T21:17:12.8857424Z lerna ERR! info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
2018-08-03T21:17:12.8857424Z lerna ERR! 
2018-08-03T21:17:12.8857424Z lerna ERR!     at Promise.all.then.arr (C:\Builds\6\s\node_modules\lerna\node_modules\execa\index.js:236:11)
2018-08-03T21:17:12.8857424Z lerna ERR!     at <anonymous>
2018-08-03T21:17:12.9482437Z lerna WARN complete Waiting for 1 child process to exit. CTRL-C to exit immediately.
2018-08-03T21:17:13.0732458Z { Error: Command failed: yarn install --mutex network:42424 --non-interactive
2018-08-03T21:17:13.0732458Z warning package.json: No license field
2018-08-03T21:17:13.0732458Z warning Waiting for the other yarn instance to finish (4048)
2018-08-03T21:17:13.0732458Z warning Waiting for the other yarn instance to finish (6896)
2018-08-03T21:17:13.0732458Z warning No license field
2018-08-03T21:17:13.0732458Z error An unexpected error occurred: "<INTERNAL_REGISTRY>/lodash.foreach/-/lodash.foreach-2.3.0.tgz: Request failed \"401 Unauthorized\"".
2018-08-03T21:17:13.0732458Z [1/4] Resolving packages...
2018-08-03T21:17:13.0732458Z [2/4] Fetching packages...
2018-08-03T21:17:13.0732458Z info If you think this is a bug, please open a bug report with the information provided in "C:\\Builds\\6\\s\\packages\\<REMOVED>\\yarn-error.log".
2018-08-03T21:17:13.0732458Z info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
2018-08-03T21:17:13.0732458Z 
2018-08-03T21:17:13.0732458Z     at Promise.all.then.arr (C:\Builds\6\s\node_modules\lerna\node_modules\execa\index.js:236:11)
2018-08-03T21:17:13.0732458Z     at <anonymous>
2018-08-03T21:17:13.0732458Z     at process._tickCallback (internal/process/next_tick.js:188:7)
2018-08-03T21:17:13.0732458Z   code: 1,
2018-08-03T21:17:13.0732458Z   killed: false,
2018-08-03T21:17:13.0732458Z   stdout: '[1/4] Resolving packages...\n[2/4] Fetching packages...\ninfo If you think this is a bug, please open a bug report with the information provided in "C:\\\\Builds\\\\6\\\\s\\\\packages\\\\<REMOVED>\\\\yarn-error.log".\ninfo Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.\n',
2018-08-03T21:17:13.0732458Z   stderr: 'warning package.json: No license field\nwarning Waiting for the other yarn instance to finish (4048)\nwarning Waiting for the other yarn instance to finish (6896)\nwarning No license field\nerror An unexpected error occurred: "<INTERNAL_REGISTRY>/lodash.foreach/-/lodash.foreach-2.3.0.tgz: Request failed \\"401 Unauthorized\\"".\n',
2018-08-03T21:17:13.0732458Z   failed: true,
2018-08-03T21:17:13.0732458Z   signal: null,
2018-08-03T21:17:13.0732458Z   cmd: 'yarn install --mutex network:42424 --non-interactive',
2018-08-03T21:17:13.0732458Z   timedOut: false,
2018-08-03T21:17:13.0732458Z   exitCode: 1 }
2018-08-03T21:17:13.0888721Z error Command failed with exit code 1.
2018-08-03T21:17:13.0888721Z info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Version 1.7.X

2018-08-03T21:33:16.4477199Z [command]C:\Windows\system32\cmd.exe /D /S /C "C:\Builds\_tool\yarn\1.7.0\x64\yarn-v1.7.0\bin\yarn.cmd build"
2018-08-03T21:33:16.9633413Z yarn run v1.7.0
2018-08-03T21:33:17.0727225Z $ lerna clean && lerna bootstrap
2018-08-03T21:33:19.2509802Z lerna info version 2.11.0
2018-08-03T21:33:19.2509802Z lerna info versioning independent
2018-08-03T21:33:19.2666043Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.2666043Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.2666043Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.2666043Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.2978554Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.5478528Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.5478528Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.5478528Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.6728520Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.8759839Z lerna success clean finished
2018-08-03T21:33:20.5947225Z lerna info version 2.11.0
2018-08-03T21:33:20.5947225Z lerna info versioning independent
2018-08-03T21:33:20.6103497Z lerna info Bootstrapping 9 packages
2018-08-03T21:33:20.6103497Z lerna info lifecycle preinstall
2018-08-03T21:33:20.6415982Z lerna info Installing external dependencies
2018-08-03T21:33:23.1103303Z lerna info Symlinking packages and binaries
2018-08-03T21:33:23.1415791Z lerna info lifecycle postinstall
2018-08-03T21:33:23.1415791Z lerna info lifecycle prepublish
2018-08-03T21:33:23.1415791Z lerna info lifecycle prepare
2018-08-03T21:33:23.1415791Z lerna success Bootstrapped 9 packages
2018-08-03T21:33:23.1572133Z $ ts-node ./build/index.ts
2018-08-03T21:33:58.5218101Z Done in 41.54s.

Salut les gens, j'ai une demande pour les personnes qui suivent ce problème et utilisent un registre privé.

Nous envisageons de supprimer le nom d' registre du fichier de verrouillage. Cela faciliterait le passage d'un registre privé à un autre, mais l'inconvénient est que tous les registres doivent utiliser des URL similaires (puisque le nom d'hôte ne ferait pas partie de l'URL, nous le fusionnerions simplement au moment de l'exécution avec l'actif configuration).

Pourriez-vous s'il vous plaît nous aider à confirmer dans # 5892 que ce flux de travail fonctionnerait pour votre fournisseur de registre privé (ou nous dire si ce n'est pas le cas)? Cela nous aiderait à obtenir le niveau de confiance nécessaire pour effectuer ce changement. Merci!

Je rencontre également des problèmes avec yarn publish ne lit pas le jeton d'authentification de mon .npmrc . J'exécute ceci sur Ubuntu.

Versions

fil - 1.9.4
npm - 5.5.1

~ / .npmrc

Voici à quoi ressemble mon ~/.npmrc (avec le jeton et le registre obfusqués):

registry=http://myprivateregistry.net/
//myprivateregistry.net/:_authToken="myAuthToken"

Production

Lorsque j'exécute yarn publish --noninteractive , je reçois l'erreur suivante:

yarn publish v1.9.4
[1/4] Bumping version...
info Current version: 2.1.3
[2/4] Logging in...
error No token found and can't prompt for login when running with --non-interactive.
info Visit https://yarnpkg.com/en/docs/cli/publish for documentation about this command.

Étapes de débogage

J'ai essayé ce qui suit en vain:

  • Copie de ~/.npmrc dans un .npmrc local dans mon répertoire de projet
  • Lancer yarn login avec mes identifiants avant d'exécuter yarn publish

J'ai également vérifié que l'exécution de npm publish dépasse l'étape d'authentification (elle échoue à l'étape de contrôle de version car elle ne me permet pas de remplacer le même numéro de version. C'est pourquoi je souhaite utiliser yarn publish --non-interactive , car il permet de télécharger, disons, les modifications README avec le même numéro de version)

Y a-t-il autre chose qui me manque? Merci!

@ liuhelen10 Avez-vous un .yarnrc dans votre projet? Cela a fonctionné pour moi avec un jeton stocké dans ~/.npmrc

Exemple

$ cat .yarnrc 
registry "https://registry.npmjs.org/"

always-auth = true en .npmrc a fait l'affaire, ne recevant plus 401 en utilisant Yarn.
Ce qui n'a pas de sens mais peu importe :)

cela a été signalé en 2017, nous sommes en 2019 maintenant et ce problème existe toujours.

D'accord, cela ne fonctionne toujours pas.

.npmrc

always-auth=true
<strong i="7">@somename</strong>:registry=https://npm.pkg.github.com/
//npm.pkg.github.com/:_authToken=[token]

.yarnc

"<strong i="11">@somename</strong>:registry" "https://npm.pkg.github.com/"

Je reçois également une erreur avec npm.pkg.github.com:

Integrity checked failed (none of the specified algorithms are supported

Je reçois également une erreur avec npm.pkg.github.com:

Integrity checked failed (none of the specified algorithms are supported

Obtenir cela aussi

J'ai eu le même problème avec Nexus version 3, mais résolu en utilisant l'approche mentionnée par @plitex dans ce numéro https://github.com/yarnpkg/yarn/issues/3093#issuecomment -317671597.

Mettez ce contenu dans le fichier .npmrc . Vous n'avez pas besoin de paramètres dans le fichier .yarnrc .

always-auth=true
registry=https://nexus.server.com/repository/npm-group/
//nexus.server.com/repository/npm-group/:_authToken={AUTH_TOKEN}

fil - version
1.17.3

npm --version
6.10.2

@nbransby , @revmischa : consultez également le numéro 7552, il se peut que le message d'erreur soit correct dans cette instance.

Deux choses qui m'ont aidé:

  1. always-auth = vrai
  2. rm yarn.lock

J'ai commencé à avoir cette erreur sur le fil 1.19.1. Avant que ce fil ne semble récupérer correctement les informations de registre et de jeton de .npmrc , mais avec 1.19.1, je devais également ajouter la configuration registry dans .yarnrc , sinon je vient d'avoir 401 erreurs.

Une fois que cela a été fait, cela a fonctionné et a continué à récupérer le jeton de .npmrc . Cela me semble être une régression - il ne semble pas y avoir de bonne raison de répliquer la configuration du registre de .npmrc à .yarnrc .

Comme @rocketraman , dès que j'ai installé yarn 1.19.1, j'ai commencé à expérimenter les 401 en essayant d'installer des packages étendus à partir d'un registre privé (nexus). npm install fonctionne bien.

Fil déclassé et tout fonctionne à nouveau:

curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.17.3

peut confirmer que c'est TOUJOURS un problème

Obtention d'erreurs 401 lors de l'exécution de yarn install

Request "https://npm.pkg.github.com/user/@scope/package" finished with status code 401.

où comme npn install s'exécute sans aucun problème

J'ai passé les 2 dernières heures à déboguer ce problème et grâce à mon ami @AndreiCalazans , j'ai une solution de contournement.

Partage ici pour tous ceux qui pourraient avoir des difficultés avec des problèmes similaires.

Cas d'utilisation

Je déploie un projet qui utilise des espaces de travail yarn sur Heroku. Même si je laisse tomber le yarn.lock et que j'utilise npm install , le projet est construit avec des espaces de travail et _ne fonctionnera pas du tout_ sans yarn .

Le projet repose sur des packages hébergés sur des packages GitHub et doit s'authentifier auprès de GitHub via un jeton.

Le problème

Heroku verrait un yarn.lock et installerait des dépendances avec yarn , ce qui ignorerait un fichier ~/.npmrc que je crée avant la construction.

Pré-construction, je courrais

echo "always-auth=true\n//npm.pkg.github.com/:_authToken=${GITHUB_NPM_TOKEN}\" >> ~/.npmrc",

Cela crée un fichier, ~/.npmrc , avec ce contenu:

always-auth=true
//npm.pkg.github.com/:_authToken=whatevermytokenis

yarn ignorerait cela et échouerait en essayant d'extraire une dépendance du registre de packages GitHub avec 401 Unauthorized .

La solution de contournement

Andrei a mentionné l'aliasing _juste l'org_ pour utiliser le registre GitHub, et _puis_ l'ajout du jeton de registre GitHub sous.

Essentiellement, modifier légèrement le fichier ~/.npmrc pour ajouter ce qui suit:

always-auth=true
+<strong i="36">@MY_ORG</strong>:registry=https://npm.pkg.github.com/

//npm.pkg.github.com/:_authToken=whatevermytokenis

Cela a tout résolu et tout à coup, yarn utilisé le jeton d'authentification fourni pour npm.pkg.github.com pour tous les paquets inférieurs à @MY_ORG qui était l'organisation GitHub.

Ouf! J'espère que ça aidera quelqu'un! 💞

C'est toujours un problème !! L'installation de NPM s'exécute sans problème, yarn add
error Couldn't find package "@diligentcorp/atlas-react" on the "npm" registry. info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

Sur ma machine Windows, le problème était que le dossier utilisateur avec mon fichier .npmrc de niveau utilisateur était sur un lecteur réseau. Le dossier utilisateur local sur la machine ne contenait pas de fichier .npmrc, mais yarn semble chercher dans ce dossier. La copie du .npmrc du lecteur réseau vers le dossier de l'utilisateur local a résolu le problème (un jeton d'authentification était stocké au niveau de l'utilisateur .npmrc).

J'ai découvert cela par accident après avoir tapé "cd ~" dans mon git bash et il est passé au dossier d'accueil distant (que je n'utilise jamais).

@TejasQ Workaround n'a pas fonctionné pour moi.

J'utilise également des packages GitHub.
Toujours obtenir 401 unauthorized même si cela fonctionne parfaitement avec npm

J'ai réussi à le faire fonctionner avec yarn v1.22.0

.npmrc

always-auth=true
<strong i="7">@fortawesome</strong>:registry=https://npm.fontawesome.com
//npm.fontawesome.com/:_authToken=xyz-xyz-xyz-xyz

.yarnrc

"<strong i="11">@fortawesome</strong>:registry" "https://npm.fontawesome.com"

registry "https://some-regular-registry.org"

puis exécutez: yarn add @fortawesome/fontawesome-pro

Cela m'arrivait aussi, j'espérais pouvoir le faire fonctionner avec seulement .npmrc , mais cela ne fonctionne que lors de l'ajout de .yarnrc , nous devons donc dupliquer la configuration juste pour le fil.

Je pense que c'est ce que je rencontre. Cela fonctionne quand .npmrc est dans le répertoire personnel, mais pas dans le répertoire du projet (nécessaire pour jenkins / travis).
https://github.com/yarnpkg/yarn/issues/8034

Cela a résolu le problème pour moi: https://github.com/yarnpkg/yarn/issues/4451#issuecomment -570691809

Assurez-vous que vous n'avez pas /name après le registre lors de la définition de celui de la portée:

- <strong i="7">@4r7d3c0</strong>:registry=https://npm.pkg.github.com/4r7d3c0
+ <strong i="8">@4r7d3c0</strong>:registry=https://npm.pkg.github.com

Selon le document, registry=https://npm.pkg.github.com/OWNER , j'ai oublié que le propriétaire n'a pas besoin d'être présent lors de la définition de la portée. NPM pouvait le gérer, mais pas le fil.

Pour ceux qui utilisent des alias, vérifiez cette solution de contournement: https://github.com/yarnpkg/yarn/issues/8130#issuecomment -636281053

Il a fallu séparer le niveau utilisateur .npmrc et le niveau projet .npmrc pour que le fil respecte les jetons du package GitHub. Le déplacement des déclarations de registre nommées du niveau utilisateur au niveau projet était la clé

Contenu de ~/.npmrc

_auth=#####TOKEN_FOR_ARTIFACTORY#####
always-auth=true
registry=https://artifactory.mycompany.net/artifactory/api/npm/npm/
//npm.pkg.github.com/:_authToken=####GitHub_NPM_REGISTRY_TOKEN#####

Contenu de ~/projects/blah/.npmrc

<strong i="14">@mycompany</strong>:registry=https://npm.pkg.github.com

Jusqu'à ce que je déplace l'entrée de registre ^ named family package au niveau du projet .npmrc , yarn install me donnait 401 (pour les packages hébergés par GH sous @mycompany ).

Pour la version Docker, montez-les séparément:

base.Dockerfile :

# syntax=docker/dockerfile:1-experimental
## ^ need to enable --mount=type=secret support

ARG BASE_IMAGE
FROM ${BASE_IMAGE} as build

# note that only project-level .npmrc is copied
COPY package.json yarn.lock .npmrc ./

# ~/.npmrc with actual secrets is mounted as "secret" (does not stay in image)
RUN --mount=type=secret,id=npmrc,target=/root/.npmrc,required \
    yarn install --production --frozen-lockfile ...

Commande de construction Docker:

DOCKER_BUILDKIT=1 docker build \
        --build-arg BASE_IMAGE=$(BASE_IMAGE) \
        --secret id=npmrc,src="$(HOME)/.npmrc" \
        -t $(IMAGE_NAME):$(IMAGE_TAG) \
        -f base.Dockerfile .

_ (Notez que je n'ai PAS besoin de .yarnrc pour que cela fonctionne, mais je suis sur le fil 1.17.3 donc les choses peuvent être différentes pour les autres versions) _

J'ai creusé un peu et il semble que le fil utilise les mauvaises informations d'authentification.

~ / .npmrc

//npm-old.visualon.de/npm/vo-npm/:_password=XXXXXX
//npm-old.visualon.de/npm/vo-npm/:username=kriese
//npm-old.visualon.de/npm/vo-npm/:always-auth=true

//npm-new.visualon.de/:_authToken="XXXXXX"

package.json

{
  "name": "yarn-auth",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "tslib": "^2.0.1",
    "moment": "2.20.1"
  }
}

yarn.lock

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


[email protected]:
  version "2.20.1"
  resolved "https://npm-old.visualon.de/npm/vo-npm/moment/-/moment-2.20.1.tgz#d6eb1a46cbcc14a2b2f9434112c1ff8907f313fd"
  integrity sha1-1usaRsvMFKKy+UNBEsH/iQfzE/0=

tslib@^2.0.1:
  version "2.0.1"
  resolved "https://npm-new.visualon.de/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e"
  integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==

Tout en essayant d'installer yarn envoie le jeton bearer de npm-new.visualon.de à npm-old.visualon.de . Donc, il semms yarn ne compare que le domaine de base.

Si quelqu'un y fait encore face, c'est ce qui a fonctionné pour moi.

.npmrc:
always-auth=true
<strong i="6">@orgaccount</strong>:registry=https://npm.pkg.github.com
registry=https://registry.yarnpkg.com

https://npm.pkg.github.com/:_authToken=yyyyjjjjj3333888etc

Je ne sais pas si quelqu'un est confronté à un problème similaire, mais peut-être que cela aidera quelqu'un à gagner un peu de temps:

J'utilise Azure Artifacts comme registre privé et j'ai configuré les fichiers PAT et .npmrc comme documenté ici.
Néanmoins, je rencontrais le même problème que npm install fonctionnait parfaitement, mais yarn install heurte à l'erreur 401 tout le temps.
Après quelques essais et erreurs, il s'est avéré que j'avais un caractère spécial dans mon URL de registre (... @ Local / ...) mais Azure Artifacts résout cela en la représentation Unicode dans leur guide de configuration. npm gère cela très bien, le fil pas tellement. La définition du caractère @ réel dans l'URL a résolu mon problème.

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