<p>yarn no respeta la configuración de autenticación en .npmrc</p>

Creado en 14 sept. 2017  ·  86Comentarios  ·  Fuente: yarnpkg/yarn

¿Quieres solicitar una función o informar de un error ?
INSECTO
¿Cuál es el comportamiento actual?
El hilo no respeta .npmrc
Si el comportamiento actual es un error, proporcione los pasos para reproducirlo.
Requerimos autenticación para uno de nuestros repositorios y solíamos hacerlo especificando la autenticación en .npmrc. Esto funcionó hasta 0.28.4 pero rompió en 1.0.0

¿Cuál es el comportamiento esperado?
Honrando la configuración de autenticación en .npmrc

Por favor, mencione su versión de node.js, yarn y sistema operativo.
Sucede después de actualizar hilo a 1.0.0 / 1.0.1 (he probado ambas versiones). Independientemente del sistema operativo y la versión de nodejs.

cat-bug help wanted

Comentario más útil

esto se informó en 2017, ahora es 2019 y este problema aún existe.

Todos 86 comentarios

Esto debería corregirse en 1.0.2 que se lanzó ayer. ¿Puedes darle una vuelta?

@BYK Estoy experimentando los mismos problemas que el anterior y como se mencionó al final de # 4157. Intenté ejecutar 1.0.2 y fallé con 404 . La ejecución en 0.27.5 funciona como se esperaba.

¿Podría pegar su archivo npmrc aquí para que podamos intentar reproducirlo (obviamente, editar secretos u otra información privada)

@KidkArolis mientras intentaba que mi directorio de trabajo

Pasos que tomé:

  • Eliminar yarn.lock y cualquier yarn-error.log archivos
  • Eliminar node_modules/
  • brew link yarn y yarn --version para asegurarme de que estaba en 1.0.2
  • yarn

Eso parece haber funcionado. Voy a señalar esto como un error de usuario mío y del final de mi equipo.

@beardedtim ¿Qué pasa si ahora soplas node_modules pero mantienes yarn.lock y luego ejecutas yarn install ? ¿Funciona todo entonces? Esto es en parte lo que el # 4157 rastrea, pero ¿puede estar relacionado con el problema más grande que nos ocupa?

Estoy experimentando este problema (404 en un repositorio de ámbito privado, cualquiera que sea el registro que use) para las versiones de hilo 1.0.1 y 1.0.2. La versión 0.27.5 funcionó después de borrar algunos artefactos.

Probé todas las soluciones alternativas discutidas en https://github.com/yarnpkg/yarn/issues/4157. Feliz de publicar registros si ayuda.

@stieg Lo intentaré más tarde hoy cuando tenga un momento libre alrededor del almuerzo y publique los resultados. Creo que todavía tengo el error 404, pero he intentado tantas cosas en este punto, ¡quién sabe!

¿Alguien ha encontrado una solución a esto?

FWIW: Lo intenté con:

  • Limpiando mi node_modules
  • Limpiando ~/.yarn
  • curl -o- -L https://yarnpkg.com/install.sh | bash para reinstalar el hilo 1.0.2
  • yarn install - _sin errores_, instaló todo perfectamente.

Mi ~/.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:

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

Interesante. Después de poner el registro en mi archivo .yarnrc , pude instalar mis paquetes. Sin embargo, lo eliminé para verificar si ese era el culpable, y aún así fue exitoso (eliminé mi caché, por lo que Yarn tuvo que descargarlo, y logró hacerlo correctamente).

Probé una instalación nueva (Debian esta vez, la otra era macOS) y tener estas configuraciones en ~/.npmrc y ~/.yarnrc funcionó igualmente bien allí. (Nota: no probé npm login o yarn login .)

Se resolvió el cierre cuando las personas que informaron esto. Reabrir con pasos concretos de reproducción si no se resuelve para ti @carlosduclos por favor.

@BYK Tuve el mismo problema.
Usé la instalación limpia de la última versión de hilo.
Y comienza a funcionar después de que agregué registry "https://registry.npmjs.org" a ~/.yarnrc .
Creo que es un error y debería resolverse automáticamente, no manualmente, como hicimos nosotros.

@BYK Puede ser útil tener en cuenta que todos los que "informaron como resueltos" han utilizado la solución alternativa de forzar el hilo a usar el registro https://registry.npmjs.org .

Sin embargo, creo que todavía hay un problema para recuperar paquetes privados del registro https://registry.yarnpkg.com , y este es el registro predeterminado utilizado por yarn (¿sigue siendo solo un proxy inverso ? ¿Quizás no está respetando los encabezados de autenticación? ).

Pasos de reproducción concretos

  1. Elimina / mueve tus archivos .npmrc y .yarnrc para que yarn use la configuración predeterminada.
  2. Busque un paquete publicado de forma privada en el registro npm.
    1a. Si lo ha descargado / publicado desde la misma máquina desde la que está probando el hilo, borre los cachés de npm y de hilo.
  3. Ejecute npm login o yarn login para completar el token de autenticación.
  4. Usando cualquier versión de hilo posterior a 0.27.5 , intente instalar este paquete.
Resultados previstos

El paquete se instala correctamente.

Resultados actuales
❤ <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 los encargados del mantenimiento del proyecto encuentran que las instrucciones de

Estoy de acuerdo con @kmoe , el problema subyacente no se soluciona ni siquiera en las versiones recientes de hilo. Vuelve a abrir el problema. Sí, tenemos una solución alternativa, ¡pero solución alternativa! = Solución en este caso.

FWIW, esto sigue siendo un problema en 1.1.0. Acabo de verificarlo (volví aquí para la solución alternativa, es decir, registry "https://registry.npmjs.org" se agrega a ~/.yarnrc )

Estoy teniendo este problema en el hilo 1.3.2 y está rompiendo nuestras construcciones en este momento. Funcionó bien en el hilo 0.27.5.

Requerimos un token de autenticación del archivo .npmrc para instalar paquetes de nuestro registro privado de Artifactory.

Pasos de reproducción:

  1. Tenga un archivo .npmrc con información de autenticación como:
registry=https://artifactory.mycompany.com/artifactory/api/npm/npm-virtual
_auth = myAuthTokenHere
always-auth = true
email = [email protected]
  1. Ejecutar yarn install
  2. Obtiene el error HTTP 401 cuando yarn intenta instalar cosas desde el registro privado:
error An unexpected error occurred: "https://artifactory.mycompany.com/api/npm/npm-virtual/@angular/compiler/-/compiler-4.3.1.tgz: Request failed \"401 Unauthorized\"".

Relacionado: # 4672

@stewx También tengo el mismo problema en 1.3.2. ¿Encontraste una solución o una forma de evitarlo?

@jamesone No,

@stewx @jamesone
Agregue registry "https://registry.npmjs.org" en su .yarnrc y reinstale los paquetes privados
Le dirá a yarn que trabaje directamente con el registro npmjs y resolverá el problema

Se siente tan mal bloquear la versión en 0.27.5 solo para eludir este problema, pero parece que muchos están haciendo exactamente eso _o_ redireccionando registry config (aunque @stewx informa que no resuelve el problema

Si los colaboradores frecuentes del proyecto no tienen tiempo para solucionar esto a corto plazo, ¿alguien estaría dispuesto a sugerir ubicaciones de base de código donde es más probable que una solución tenga éxito, con la esperanza de que se abra un RP comunitario? 🤔

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

@Bnaya Cuando dices reinstalar, ¿te refieres a eliminar node_modules en tu proyecto o borrar la caché de hilo?

hilo quitar su paquete privado; hilo agregue su paquete privado

Y en el archivo de bloqueo verá https://registry.npmjs.org/*** url y no https://registry.yarnpkg ***

Sugeriría agregar el .yarnrc junto a su package.json

De hecho, lo hice funcionar poniendo registry "https://registry.npmjs.org" en ~/.yarnrc , es decir, sin necesidad de un paquete local .yarnrc .

Pasos para reproducir el error para mí:

  • no tiene un ~/.yarnrc modificado
  • crear nuevo proyecto
  • caché de hilo limpio
  • hilo agregar módulo privado -> fallar

Si modifico ~/.yarnrc como se mencionó anteriormente, los pasos no crean un error.

Si miro algunos de mis proyectos donde hay fallas, veo que yarn.lock contiene https://registry.yarnpkg.com/@myscope/mypackage/ . Para que estos proyectos funcionen, necesito eliminar yarn.lock y regenerarlo, después de haber realizado la actualización a ./.yarnrc .

Esto parece explicar por qué algunas personas todavía tienen errores incluso cuando intentan algo que funciona para otras.

Cómo resolver en conclusión:

  • agregar registry "https://registry.npmjs.org" a ~ / .yarnrc
  • eliminar y regenerar yarn.lock para proyectos fallidos

@TheLudd Regenerating yarn.lock from scratch derrota su propósito.

En su lugar, los encargados del mantenimiento del proyecto pueden considerar buscar / reemplazar desde yarnpkg.com a npmjs.org , conservando su estado actual de archivo de bloqueo.

@awkaiser Bueno, siempre que pasen tus pruebas, puedes comprometerlas y todos los demás colaboradores tendrán el mismo entorno que tú. Entonces, en mi opinión, no está derrotando su propósito.
Pero sí, también puedes buscar reemplazar.

Pero la regla también es que no debes modificar yarn.lock manualmente;)

Si siempre fuera seguro extraer los últimos paquetes absolutos que satisfacen nuestros requisitos de package.json , no necesitaríamos archivos de bloqueo en absoluto. 😜

Normalmente, sí, no deberíamos modificar yarn.lock a mano, pero esto, al ser un error, admite una excepción a esa regla. La actualización de la referencia de la ubicación del registro con una búsqueda y reemplazo debería ser sencilla y segura. 🍻

No necesitaba regenerar todo mi archivo de bloqueo.
Solo para eliminar e instalar los paquetes privados

@awkaiser o cualquier otra persona en el hilo: una forma en que puede ayudar es creando un ejemplo reproducible. Por ejemplo, basarlo en este repositorio https://github.com/KidkArolis/yarn-scopes-issue. Si puede producir un repositorio donde la ejecución de yarn falla (respuesta de registro específica, configuración de hilo específica, package.json específico, etc.), definitivamente podría echar un vistazo a la solución del problema.

En general:

  1. No necesita .yarnrc archivo
  2. No es necesario que .yarnrc contenga registry "https://registry.npmjs.org"
  3. Los módulos privados de registry.npmjs.org deberían funcionar
  4. Los módulos privados de custom.registry.org deberían funcionar

@KidkArolis los fallos son aleatorios. pero están ahí.
Como escribí sobre otro problema relacionado: su o un problema con el registro de hilo (tal vez fallas de almacenamiento en caché, encabezado Vary incorrecto en el proxy, lo que sea), o un caso de borde complejo dentro del hilo que ocurre solo con el registro de hilo.

¿Es insuficiente lo que el 25 de septiembre de 2017 ? 🤔

Impulsó la reapertura de este número, lo que implica la reproducción por parte de los contribuyentes.

@KidkArolis No estoy seguro de cómo puedo crear un ejemplo reproducible en un repositorio, ya que se trata de módulos privados y, por lo tanto, depende de quién ejecuta el hilo, ¿verdad? Pero mis pasos para reproducir el error están aquí https://github.com/yarnpkg/yarn/issues/4451#issuecomment -355248563 y lo que escribió @kmoe también es suficiente.

Cuando intento instalar un paquete privado sin modificar .yarnrc el error que aparece comienza con

Se produjo un error inesperado: " https://registry.yarnpkg.com

Esto implica que busca en el registro de hilos y no en npm. ¿No es ese el error que causa este error?

Ok, gracias por resurgir esos pasos de reproducción. Intentaré echar un vistazo.

Por el motivo que sea, agregar esta ubicación explícita a .npmrc para saber dónde encontrar mis paquetes privados hizo que el error 404 dejara de ocurrir en todos los repositorios en los que esto estaba causando un problema.

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

¿Alguien tiene un paquete npm privado al que puedan agregarme? Nombre de usuario: kidkarolis .

Estoy luchando para obtener una cuenta paga, su sistema de facturación / cuenta no parece funcionar para mí en el cajero automático (obtengo 402 Payment Required aunque me cobraron: - "). Así que mientras espero los npm soporte, si alguien me agrega a un paquete privado (si eso es posible), eso aceleraría las cosas.

Ok, creo que fue solo ... consistencia eventual, mi cuenta npm privada funciona ahora.

Sin embargo, todavía no puedo reproducir el problema :(

Seguí los pasos proporcionados por @kmoe :

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

Se instala bien (y no lo hace si no lo hago npm login ). En otras palabras, funciona como se esperaba para mí.

Y a juzgar por yarn.lock, mi instalación pasa por https://registry.yarnpkg.com y parece usar la autenticación como se esperaba. ¿Podría ser que hubo un problema en el servidor en el pasado, pero ahora está resuelto?

Ok, creo que reproduje algo.

Si agrego <strong i="6">@qubit</strong>:registry=https://registry.npmjs.org/ a .npmrc , la instalación ya no funciona.
Creo que esa línea se agrega si inicia sesión con npm login --scope=@qubit y no se agrega si inicia sesión con solo npm login . Veremos cómo solucionar esto a continuación.

@KidkArolis otra forma común de configurar esa configuración sería:

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

Abrió un PR - # 5162 retroalimentación (o incluso QA) bienvenida.

@KidkArolis Gracias por las relaciones públicas. Pero creo que el problema radica no solo en el caso "--scope", sino en un caso más general donde un repositorio privado también refleja los paquetes públicos con auth.

Por cierto, @ bytheway875 , tu truco de usar https://registry.yarnpkg.com/ como el registro funcionó para mí.

Mi situación:

  • Objetivo: instalar paquetes privados con yarn desde una organización (@ org-name) en npmjs.com usando un archivo authToken en el archivo local .npmrc durante una compilación de CI (GitLab), por lo que no ha iniciado sesión en npm .
  • funciona con npm
  • no hay problemas en la máquina de desarrollo (mac), puedo npm login y yarn simplemente funciona O puedo cerrar sesión en npm pero crear manualmente un archivo local / HOME dir .npmrc con una sola línea: //registry.npmjs.org/:_authToken=token y yarn simplemente funciona (ese segundo método _ podría estar funcionando debido al caché local, no intenté borrar eso)
  • .yarnrc truco de arriba no funcionó

_La única forma en que puedo hacer que esto funcione es creando el siguiente archivo local .npmrc antes de ejecutar yarn install en CI: _

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

Tuve un problema similar con el archivo .npmrc . Todo lo que tenía que hacer era configurar la codificación del archivo .npmrc en ANSI (en Windows puede usar notepad.exe> ​​Guardar como ...).
Puede probar cómo ve el hilo el contenido de su archivo .npmrc usando yarn config list

No puedo hacer que esto funcione con v1.4.1 . Tengo un repositorio privado de Nexus y lo uso como caché / proxy ( como este ). Parece que no puedo encontrar instrucciones definitivas, por lo que es posible que esté haciendo algo mal. Cogí la sintaxis yarn config aquí y la yarn login aquí .

Editar : Debería haber mencionado que intenté iniciar sesión a través de NPM primero para obtener los .npmrc antes de intentarlo con yarn .

A continuación se muestra exactamente lo que estoy haciendo para probar.

Comprobar combinación de confirmación (dc705768)

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

Preparar

Cree un Dockerfile para proporcionar un entorno de referencia consistente para las pruebas.

# 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 {} \;

Crear imagen de Docker

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

Hilado de prueba

Sugerencia : siga saliendo y reiniciando el contenedor de Docker para obtener un entorno limpio.

Sin configuración

Asegúrese de que el entorno funcione inicializando un proyecto y agregando una dependencia sin realizar ningún cambio de configuración.

Ejecutar contenedor de Docker

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

Prueba

Agregue la dependencia 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.

Configuración de registro privado

Ejecutar contenedor de Docker

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

Prueba

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.

Agregue left-pad dependencia.

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.

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

Prueba NPM

Vaya directamente a la configuración deseada porque funciona.

Configuración de registro privado

Ejecutar contenedor de Docker

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

Prueba

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

Agregue left-pad dependencia.

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 Gracias por el informe detallado. Lo único que me falta para decirte lo que podría estar fallando aquí es el contenido de los archivos ~/.npmrc y ~/.yarnrc . Pegaste tu .yarnrc , pero no contiene contraseña. Además, sin el archivo .npmrc para comparar, es difícil precisar el problema.

Su caso de uso debería funcionar bien en ^ 1.4.0, pero se trata de cómo se ve el archivo de configuración.

Tbh contigo, nunca uso yarn login , primero npm login y luego uso yarn . En el ejemplo anterior, si primero hace npm set config registry ... && npm login y luego ejecuta add left-pad , ¿funciona? Si npm funciona, también debería funcionar el hilo. Entonces me pregunto si el comando yarn login es lo que está roto.

@KidkArolis Al ignorar yarn login y esperar poder hacerlo funcionar con solo npm login , pude hacer algunos progresos. Veo dos cosas.

.npmrc

Los documentos para npm-login no parecen coincidir con lo que realmente veo en .npmrc . Específicamente, el argumento --always-auth para el comando npm login no tiene ningún impacto en la configuración, aunque los documentos dicen:

Se puede usar con --registry y / o --scope, p. Ej.
...
La configuración específica del registro de always-auth tiene prioridad sobre cualquier configuración global.

Sin embargo, independientemente de si uso o no ese argumento, siempre termino con el mismo .npmrc . Ambos:

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

y

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

producir esto .npmrc :

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

Oler el tráfico que va a mi registro muestra que NPM envía el token de autenticación independientemente:

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 no envía el token a menos que se establezca always-auth . Establecer explícitamente la bandera always-auth en .npmrc hace que todo funcione como se esperaba.

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

Más allá de saber que el comportamiento entre NPM y Yarn es diferente, no estoy lo suficientemente familiarizado con ninguno como para saber cuál es el comportamiento correcto.

yarn login

Creo que puede tener razón en que yarn login no funciona, pero no lo he probado exhaustivamente. Ignorando .npmrc y usando solo yarn , trato de imitar la configuración de 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

No importa lo que haga, nunca se me solicita que ingrese mi contraseña.

@KidkArolis Para mí, npm funciona sin always-auth=true explícitos en .npmrc y yarn (1.3.2 o 1.4.0) no. En mi caso, estoy tratando de apuntar todas las solicitudes al registro virtual en artifactory. Con always-auth=true y authToken en .npmrc, funciona en 1.3.2 , por lo que no está claro qué se corrigió exactamente en 1.4.0 .

Esto todavía parece ser un problema, específicamente conectarse a nuestro repositorio de Nexus.

Probé varios enfoques:

  1. Eliminando mi ~/.yarnrc completo y confiando solo en lo que está en ~/.npmrc .
  2. Jugando con la configuración del registro en ~/.yarnrc .

Parece que el hilo no está usando el _auth hash _auth=xyz ) de ~/.npmrc

Información de la versión

NPM

npm --version                                                                                                                                                                                                                                                                                                      
5.6.0

Hilo

yarn --version
1.5.1

Ejecutando en OS X 10.13.2.

NPMRC

Mi ~/.npmrc ve así (algunos _valores_ de configuración se omiten por razones obvias):

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

Mi ~/.yarnrc ve así (nuevamente se omiten los valores obvios):

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

¯_ (ツ) _ / ¯

No estoy seguro de a dónde ir desde aquí. No está del todo claro qué está pasando, aparte de que todas las construcciones de hilo fallan de la siguiente manera:

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 (No soy un ingeniero de operaciones de desarrollo) y solo estoy tratando de utilizar un paquete que se apoya en el hilo para construir electrones. Este podría ser simplemente yo sin saber cómo configurar el hash de base64 username | contraseña para hilo. No he podido encontrar documentos que expliquen eso.

@ezweave Sonatype tiene muy buena documentación . Ese enlace también tiene instrucciones de prueba para asegurarse de que está realizando la codificación base64 correctamente. Personalmente, me resulta más fácil habilitar npm Bearer Token Realm en Nexus y usar npm login en mi estación de trabajo. 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

Asegúrese de que funcione con NPM antes de probar Yarn. No sé si importa, pero tiene dos barras inclinadas ( // ) en el registro .yarnrc .

@ryanjaeb entonces, nuestro equipo de devops tiene Nexus bloqueado para _sólo_ admitir el Reino LDAP. Este podría ser el núcleo del problema, pero hay muchas herramientas que se basan en yarn que no puedo usar porque parece que no es compatible. Intenté agregar _auth como parámetro en la sintaxis apropiada, etcétera. Nada parece funcionar. (FWIW: las barras múltiples eran una supuesta solución para un problema relacionado, lo he hecho con y sin éxito).

Puede confirmar que la autenticación de Yarn está rota con Nexus. yarn login no solicita una contraseña pero dice que inició sesión correctamente (no lo hizo, no hay cambios en el archivo rc),

Publish solicita la contraseña y publica, pero nunca lee desde el token __auth donde sea que esté configurado, debe iniciar sesión cada vez. Y tampoco puede usar hilo en un escenario de CI.

el hilo no funciona dentro de CI. ¿Funcionará esto alguna vez?

Este problema debería haber sido solucionado por https://github.com/yarnpkg/yarn/pull/5216. Ese PR tenía una descripción que contenía esto:

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

y eso hizo que GitHub solo cerrara # 4157 automáticamente cuando ese PR se fusionó. Los otros problemas probablemente también deberían haberse cerrado.

@valscion, esto podría ayudar aún más con estos problemas: https://github.com/yarnpkg/yarn/pull/5322 , pero se deslizó por las grietas.

Agregar otro punto de datos: yarn 1.8.x + falla en mi agente de compilación (VSTS). Revertir SOLO yarn a 1.7.x resuelve el problema. Está buscando en el registro correcto, pero sin usar los tokens que el agente de compilación inyecta en .npmrc . Me doy cuenta de que hay muchas variables aquí, pero pensé que podría ser útil.

Ejecutar 1.9.x localmente, donde los tokens se guardan en mi usuario .npmrc , funciona bien.

Versión 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.

Versión 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.

Hola amigos, tengo una solicitud para las personas que siguen este problema y usan un registro privado.

Estamos considerando eliminar el nombre de registro del archivo de bloqueo. Esto facilitaría el cambio de un registro privado a otro, pero la desventaja es que todos los registros deben usar URL similares (dado que el nombre de host no sería parte de la URL, simplemente lo fusionaríamos en tiempo de ejecución con el activo configuración).

¿Podría ayudarnos a confirmar en el n. ° 5892 que este flujo de trabajo funcionaría para su proveedor de registro privado (o díganos si no lo haría)? Eso nos ayudaría a obtener el nivel de confianza necesario para realizar este cambio. ¡Gracias!

Estoy teniendo problemas con yarn publish no leo el token de autenticación de mi .npmrc también. Estoy ejecutando esto en Ubuntu.

Versiones

hilo - 1.9.4
npm - 5.5.1

~ / .npmrc

Así es como se ve mi ~/.npmrc (con el token y el registro ofuscados):

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

Salida

Cuando ejecuto yarn publish --noninteractive , recibo el siguiente error:

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.

Pasos de depuración

He intentado lo siguiente sin éxito:

  • Copiando ~/.npmrc a un .npmrc local en el directorio de mi proyecto
  • Ejecutando yarn login con mis credenciales antes de ejecutar yarn publish

También verifiqué que ejecutar npm publish supera el paso de autenticación (falla en el paso de control de versiones porque no me permite anular el mismo número de versión. Por eso quiero usar yarn publish --non-interactive , porque permite cargar, digamos, cambios README con el mismo número de versión)

¿Hay algo más que me falta? ¡Gracias!

@ liuhelen10 ¿Tiene .yarnrc archivo dentro de su proyecto? Esto funcionó para mí con el token almacenado dentro de ~/.npmrc

Ejemplo

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

always-auth = true en .npmrc hizo el truco y ya no recibió 401 mientras usaba Yarn.
Lo que no tiene sentido pero como sea :)

esto se informó en 2017, ahora es 2019 y este problema aún existe.

De acuerdo, esto todavía no funciona.

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

También recibo un error con npm.pkg.github.com:

Integrity checked failed (none of the specified algorithms are supported

También recibo un error con npm.pkg.github.com:

Integrity checked failed (none of the specified algorithms are supported

Obteniendo esto también

Tuve el mismo problema al usar Nexus versión 3, pero lo resolví usando el enfoque mencionado por @plitex en este problema https://github.com/yarnpkg/yarn/issues/3093#issuecomment -317671597.

Coloque este contenido en el archivo .npmrc . No es necesario tener ninguna configuración en el archivo .yarnrc .

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

hilo --versión
1.17.3

npm --version
6.10.2

@nbransby , @revmischa : Consulte también el número 7552, es posible que el mensaje de error sea correcto en este caso.

Dos cosas que me ayudaron:

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

Empecé a recibir este error en el hilo 1.19.1. Antes, ese hilo parecía recoger correctamente el registro y la información del token de .npmrc , pero con 1.19.1, tuve que agregar la configuración registry en .yarnrc también, de lo contrario, acaba de recibir errores 401.

Una vez hecho esto, funcionó y continuó recogiendo el token de .npmrc . Me parece una regresión: no parece haber ninguna buena razón para replicar la configuración del registro de .npmrc a .yarnrc .

Al igual que @rocketraman , tan pronto como instalé yarn 1.19.1, comencé a experimentar errores 401 al intentar instalar paquetes con ámbito desde un registro privado (nexus). npm install funciona bien.

Hilo degradado y todo funcionando de nuevo:

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

puede confirmar que TODAVÍA es un problema

Obteniendo errores 401 al ejecutar yarn install

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

donde como npn install ejecuta sin problema

Pasé las últimas 2 horas depurando este problema y gracias a mi amigo @AndreiCalazans , tengo una solución.

Compartiendo aquí para cualquiera que pueda estar luchando con algo similar.

Caso de uso

Estoy implementando un proyecto que usa espacios de trabajo yarn en Heroku. Incluso si elimino yarn.lock y uso npm install , el proyecto se construye con espacios de trabajo y _no funcionará en absoluto_ sin yarn .

El proyecto se basa en paquetes alojados en paquetes de GitHub y necesita autenticarse en GitHub a través de un token.

El problema

Heroku vería un yarn.lock e instalaría dependencias con yarn , lo que ignoraría un archivo ~/.npmrc que creo antes de la compilación.

Pre-construir, correría

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

Esto crea un archivo, ~/.npmrc , con este contenido:

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

yarn ignoraría esto y fallaría al intentar extraer una dependencia del registro del paquete de GitHub con 401 Unauthorized .

La solución alternativa

Andrei mencionó el uso de alias _solo org_ para usar el registro de GitHub, y _entonces_ agregar el token de registro de GitHub debajo.

Esencialmente, cambiando ligeramente el archivo ~/.npmrc para agregar lo siguiente:

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

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

Eso resolvió todo y, de repente, yarn usó el token de autenticación proporcionado para npm.pkg.github.com para cualquier paquete bajo @MY_ORG que era la organización de GitHub.

¡Uf! ¡Espero que esto ayude a alguien! 💞

¡Esto sigue siendo un problema! La instalación de NPM funciona sin problemas, añadir hilo
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.

En mi máquina con Windows, el problema era que la carpeta de usuario con mi archivo .npmrc de nivel de usuario estaba en una unidad de red. La carpeta de usuario local en la máquina no tenía un archivo .npmrc, pero parece que yarn busca en esta carpeta. Copiar el .npmrc de la unidad de red a la carpeta de usuario local solucionó el problema (se almacenó un token de autenticación en el nivel de usuario .npmrc).

Lo descubrí por accidente después de escribir "cd ~" en mi git bash y cambió a la carpeta de inicio remota (que nunca uso).

@TejasQ Workaround no funcionó para mí.

También estoy usando paquetes de GitHub.
Todavía obtengo 401 unauthorized aunque funciona perfectamente bien con npm

Me las arreglé para hacerlo funcionar con hilo 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"

y luego ejecutar: yarn add @fortawesome/fontawesome-pro

También me pasó a mí, esperaba poder hacerlo funcionar con solo .npmrc , pero solo funciona cuando se agrega .yarnrc , por lo que tenemos que duplicar la configuración solo para hilo.

Creo que esto es lo que me estoy encontrando. Funciona cuando .npmrc está en el directorio de inicio, pero no en el directorio del proyecto (necesario para jenkins / travis).
https://github.com/yarnpkg/yarn/issues/8034

Asegúrese de no tener /name después del registro al configurar el ámbito:

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

Según el documento, registry=https://npm.pkg.github.com/OWNER , pasé por alto que el propietario no necesita estar allí al configurar el alcance. NPM podía manejarlo, pero el hilo no.

Para aquellos que usan alias, verifique esta solución alternativa: https://github.com/yarnpkg/yarn/issues/8130#issuecomment -636281053

Tuve que dividir el nivel de usuario .npmrc y el nivel de proyecto .npmrc para que el hilo respetara los tokens de paquetes de GitHub. Mover las declaraciones de registro con nombre de nivel de usuario a nivel de proyecto fue la clave

Contenido 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#####

Contenido de ~/projects/blah/.npmrc

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

Hasta que moví la ^ entrada de registro del paquete familiar nombrado al nivel de proyecto .npmrc , yarn install me estaba dando 401 (para paquetes alojados en GH de menos de @mycompany ).

Para la compilación de Docker, móntelos por separado:

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

Comando de compilación de 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 .

_ (Tenga en cuenta que NO necesito .yarnrc para que esto funcione, pero estoy en el hilo 1.17.3, por lo que las cosas pueden ser diferentes para otras versiones) _

He investigado un poco y parece que Yarn usa las credenciales de autenticación incorrectas.

~ / .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"
  }
}

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

Al intentar instalar hilo, envía el token bearer de npm-new.visualon.de a npm-old.visualon.de . Entonces, el hilo semms solo compara el dominio base.

Si alguien todavía lo enfrenta, esto es lo que funcionó para mí.

.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

No estoy seguro de si alguien enfrenta un problema similar, pero tal vez esto ayude a alguien a ahorrar un poco de tiempo:

Estoy usando Azure Artifacts como un registro privado y configuré los archivos PAT y .npmrc como se documenta allí.
Sin embargo, me encontré con el mismo problema de que npm install funcionaba perfectamente, pero yarn install encuentra con el error 401 todo el tiempo.
Después de un poco de intentos y errores, resultó que tenía un carácter especial en la URL de mi Registro (... @ Local / ...) pero Azure Artifacts resuelve esto en la representación Unicode dentro de su guía de configuración. npm maneja esto bien, hilo no tanto. Establecer el carácter @ real en la URL, resolvió mi problema.

¿Fue útil esta página
0 / 5 - 0 calificaciones