• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

241
Views
`npm publique` y `npm install` fallan dependiendo de la sintaxis `.npmrc` utilizada

Comportamiento actual:

Estoy intentando configurar un proyecto para instalar dependencias de NPM. Publicaré el proyecto en GitHub Packages como un paquete privado. Si uso esta sintaxis en el .npmrc de mi proyecto:

 @my-org:registry=https://npm.pkg.github.com/

Puedo instalar dependencias desde NPM usando npm install en mi máquina local. Sin embargo, no puedo publicar en GitHub Packages usando npm publish . NPM me informa que no estoy autenticado. Si uso esta sintaxis en el .npmrc de mi proyecto:

 registry=https://npm.pkg.github.com/my-org/

Puedo publicar usando npm publish , pero no puedo instalar dependencias con npm install . NPM me informa que está intentando instalar dependencias de paquetes de GitHub, en lugar de NPM.

Comportamiento esperado:

Según mi lectura, ambas sintaxis deberían ser compatibles con npm install y npm publish . Sin embargo, parece que solo puedo usar uno u otro, según el uso previsto.

Pasos para reproducir:

  1. Instale Node v15.7.0 y NPM 7.4.3 a través de nvm .

  2. Inicie sesión en GitHub Packages con el comando:

     npm login --scope=@my-org --registry=https://npm.pkg.github.com
  3. Consulte nuestro archivo ~/.npmrc en nuestra carpeta de inicio. Debería leer:

     @my-org:registry=https://npm.pkg.github.com/ //npm.pkg.github.com/:_authToken=<auth-token-used-for-login>
  4. Cree un proyecto con el siguiente package.json :

     { "name": "@my-org/my-package", "description": "A test.", "version": "1.0.0", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "https://github.com/my-org/my-package.git" }, "keywords": ["example"], "author": "Me", "license": "ISC", "bugs": { "url": "https://github.com/my-org/my-package/issues" }, "homepage": "https://github.com/my-org/my-package", "dependencies": { "bootstrap": "^4.5.2" } }
  5. Agregue el siguiente .npmrc a nuestro proyecto:

     @my-org:registry=https://npm.pkg.github.com/
  6. Ejecute npm install . La instalación debería tener éxito.

  7. Ejecute npm publish . Recibe el siguiente error:

     npm ERR! code ENEEDAUTH npm ERR! need auth This command requires you to be logged in. npm ERR! need auth You need to authorize this machine using `npm adduser` npm ERR! A complete log of this run can be found in: npm ERR! /Users/my-user/.npm/_logs/2021-01-28T20_19_55_974Z-debug.log
  8. Cambie el proyecto .npmrc a:

     registry=https://npm.pkg.github.com/my-org/
  9. Ejecute npm publish . La publicación debería tener éxito.

  10. rm -rf node_modules/ package-lock.json en el proyecto.

  11. Ejecute npm install . Recibe el siguiente error:

     npm ERR! code E401 npm ERR! Incorrect or missing password. npm ERR! If you were trying to login, change your password, create an npm ERR! authentication token or enable two-factor authentication then npm ERR! that means you likely typed your password in incorrectly. npm ERR! Please try again, or recover your password at: npm ERR! https://www.npmjs.com/forgot npm ERR! npm ERR! If you were doing some other operation then your saved credentials are npm ERR! probably out of date. To correct this please try logging in again with: npm ERR! npm login npm ERR! A complete log of this run can be found in: npm ERR! /Users/my-user/.npm/_logs/2021-01-28T20_38_20_711Z-debug.log

Ambiente:

  • sistema operativo:
    • Mac OS Catalina 10.15.7
    • MacOS Big Sur 11.1
  • Nodo: 15.7.0
  • npm: 7.4.3

Cosas que he intentado

Usando publishConfig

Desafortunadamente, publishConfig no soluciona el problema. Tampoco aborda que las dos sintaxis .npmrc producen resultados diferentes.

Proyecto .npmrc authToken

La documentación de NPM establece que no es necesario incluir el authToken de autenticación en el proyecto .npmrc . La autenticación con npm login y el almacenamiento del authToken en el ~/.npmrc global debería ser suficiente.

Solución alterna

Usando el indicador de línea de comando --registry

Encontré una solución alternativa hasta que se resuelva el error de NPM que afecta este problema. Cuando se usa la siguiente sintaxis del proyecto .npmrc :

 @my-org:registry=https://npm.pkg.github.com/

Si ejecuto npm publish --registry=https://npm.pkg.github.com/ , puedo publicar correctamente. Además, puedo instalar dependencias sin problemas.

over 3 years ago · Santiago Trujillo
2 answers
Answer question

0

Encontré 2 problemas en los pasos del 1 al 7.

  1. en el paso 4, ¿intentó agregar el campo a continuación en el package.json
 "publishConfig": { "registry": "https://npm.pkg.github.com/" }
  1. en .npmrc en el paso 5, no vi //npm.pkg.github.com/:_authToken=<auth-token-used-for-login> , recuerde que // no es el comentario. ; o # son para comentarios. https://docs.npmjs.com/cli/v6/configuring-npm/npmrc#comments
over 3 years ago · Santiago Trujillo Report

0

Actualización (30 de mayo de 2021)

Esto se ha corregido en NPM 7.5.3 y versiones posteriores.

Respuesta original (20 de abril de 2021)

Esto ha sido confirmado como un error en NPM 7.x Actualmente, el equipo está trabajando para corregir el error con su GitHub Pull Request #2602 . Hasta que se publique esta corrección de errores, la mejor recomendación es realizar una de las soluciones que se enumeran a continuación.

Solución alternativa 1: indicador de línea de comando --registry

Cuando ejecute npm publish , agregue el indicador --registry . Esta marca permite a los desarrolladores especificar el registro en el que pretenden publicar, anulando las configuraciones de .npmrc o package.json . Para el ejemplo enumerado en mi pregunta, el proyecto .npmrc debe contener:

 @my-org:registry=https://npm.pkg.github.com/

La publicación tendrá éxito cuando se inicie ejecutando:

 npm publish --registry=https://npm.pkg.github.com/

Solución alternativa 2: token ficticio para el registro predeterminado

De acuerdo con el comentario del desarrollador de npm wraithgar sobre el problema de GitHub de este error , puede usar un token ficticio para el registro de NPM predeterminado para solucionar este problema. En el .npmrc de nuestro proyecto, agregue la siguiente línea:

 //registry.npmjs.org/:_authToken=dummy

El proyecto completo .npmrc debe contener:

 //registry.npmjs.org/:_authToken=dummy @my-org:registry=https://npm.pkg.github.com/

En la pregunta, ninguna de las sintaxis del proyecto .npmrc que hemos intentado usar ha designado un registro, porque la documentación de NPM establece que no es necesario. La documentación indica que verificará nuestro ~/.npmrc global si no hay uno en nuestro proyecto .npmrc . El error en NPM hace que NPM verifique si un proyecto .npmrc ha designado un registro antes de que intente autenticarse. En las propias palabras de Wraithgar :

Lo que sucede es que actualmente el cli solo está buscando su configuración de "registro" configurada cuando ve si ha iniciado sesión. Entonces, la solución temporal es anular esa configuración (como lo estaba haciendo al pasar --registry), O agregar un token para el registro predeterminado (npm) para que la verificación de un token no falle. La verificación solo busca la presencia de un token en la configuración, no lo valida (eso, por supuesto, sucederá cuando y si se usa durante una solicitud real), por lo que poner un valor ficticio detendrá el error hasta ese PR tierras

Después de agregar el token ficticio, la ejecución npm publish npm install deberían funcionar correctamente.

over 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error