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.
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:
yarn.lock
et tous les fichiers yarn-error.log
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:
node_modules
~/.yarn
curl -o- -L https://yarnpkg.com/install.sh | bash
pour réinstaller yarn 1.0.2yarn 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? ).
.npmrc
et .yarnrc
pour que yarn utilise la configuration par défaut.npm login
ou yarn login
pour remplir le jeton d'authentification.0.27.5
, essayez d'installer ce package.Le package s'installe avec succès.
❤ <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:
.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]
yarn install
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:
~/.yarnrc
modifié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.
registry "https://registry.npmjs.org"
à ~ / .yarnrcyarn.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:
.yarnrc
fichier .yarnrc
pour contenir registry "https://registry.npmjs.org"
registry.npmjs.org
devraient fonctionnercustom.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 :
rm ~/.yarnrc && rm ~/.npmrc
yarn cache clean && npm cache clean --force
npm login
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:
yarn
depuis une organisation (@ org-name) sur npmjs.com en utilisant un fichier authToken
dans .npmrc
fichier npm
.npm
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.
git tag --contains dc705768
v1.4.0
v1.4.1
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 {} \;
docker build -t yarn-private-registry-test .
Astuce : continuez à quitter et à redémarrer le conteneur Docker pour obtenir un environnement propre.
Assurez-vous que l'environnement fonctionne en initialisant un projet et en ajoutant une dépendance sans apporter de modifications de configuration.
docker run -it --rm yarn-private-registry-test
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.
docker run -it --rm yarn-private-registry-test
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.
.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
Passez directement à la configuration souhaitée car cela fonctionne.
docker run -it --rm yarn-private-registry-test
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:
~/.yarnrc
et ne se fiant qu'à ce qui se trouve dans ~/.npmrc
.~/.yarnrc
.Il semble que le fil n'utilise pas la _auth
hachée _auth=xyz
) de ~/.npmrc
NPM
npm --version
5.6.0
Fil
yarn --version
1.5.1
Fonctionnant sous OS X 10.13.2.
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
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.
fil - 1.9.4
npm - 5.5.1
Voici à quoi ressemble mon ~/.npmrc
(avec le jeton et le registre obfusqués):
registry=http://myprivateregistry.net/
//myprivateregistry.net/:_authToken="myAuthToken"
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.
J'ai essayé ce qui suit en vain:
~/.npmrc
dans un .npmrc
local dans mon répertoire de projetyarn 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é:
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.
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.
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
.
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.
Commentaire le plus utile
cela a été signalé en 2017, nous sommes en 2019 maintenant et ce problème existe toujours.