Cli: [BUG] npm Unublish devuelve el error 404 y no se imprime el error a menos que se utilice un nivel de registro detallado

Creado en 29 jun. 2020  ·  14Comentarios  ·  Fuente: npm/cli

Qué? Por qué

npm unpublish no funciona y no muestra ningún error a pesar de que el registro responde con un código 404.

Cuando

npm unpublish @siliceum/[email protected] --loglevel verbose

Dónde

registro público npm

Cómo

Comportamiento actual

La línea de comando solo imprime

mientras el servidor responde con un error 404.

Además, el punto final https://registry.npmjs.org/@siliceum%2fcalcite-cli devuelve información, pero la versión con ?write=true ( https://registry.npmjs.org/@siliceum%2fcalcite-cli?write=true ) devuelve un error 404 no encontrado.

Pasos para reproducir

npm unpublish @siliceum/[email protected]

Comportamiento esperado

El paquete no está publicado o se imprime un error. (en última instancia, algo más que un 404).
Con el nivel de registro detallado, es posible tener la siguiente salida

npm unpublish @siliceum/[email protected] --loglevel verbose

npm info funcionó si termina con ok
npm verbo cli [
npm verbo cli 'C: \ Archivos de programa \ nodejs \ node.exe',
npm verbo cli 'C: \ Archivos de programa \ nodejs \ node_modules \ npm \ bin \ npm-cli.js',
npm verbo cli 'unublish',
npm verbo cli '@ siliceum / [email protected] ',
npm verbo cli '--loglevel',
npm verbo cli 'verbose'
npm verbo cli]
npm info usando [email protected]
npm info usando [email protected]
npm verbo npm-session e43c8f8257e968e5
npm http fetch GET 404 https://registry.npmjs.org/@siliceum%2fcalcite-cli ? write = true 492ms

  • @ siliceum / [email protected]
    npm verbo exit [0, true]
    tiempo npm npm Completado en 1157ms
    npm info ok
Bug

Comentario más útil

¡Ups! No importa eso, acabo de cerrar sesión y volver a iniciar sesión y ahora ambas funciones funcionan, extraño, ¡perdón por la confusión!

Todos 14 comentarios

¡También tengo este problema con npm unpublish y npm deprecate !

$ npm deprecate --force --verbose [email protected] "Generates errors related to exports in the browser, use 1.2.2 or newer"
...
npm http fetch GET 200 https://registry.npmjs.org/luar?write=true 328ms
npm http fetch PUT 404 https://registry.npmjs.org/luar 98ms
npm verb stack Error: 404 Not Found - PUT https://registry.npmjs.org/luar - Not found
npm verb stack     at /usr/lib/node_modules/npm/node_modules/npm-registry-fetch/check-response.js:114:15
npm verb stack     at processTicksAndRejections (internal/process/task_queues.js:93:5)
npm verb statusCode 404
npm verb pkgid [email protected]
...
npm ERR! code E404
npm ERR! 404 Not Found - PUT https://registry.npmjs.org/luar - Not found
npm ERR! 404 
npm ERR! 404  '[email protected]' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
...
$ npm unpublish --force --verbose [email protected]
...
npm http fetch GET 200 https://registry.npmjs.org/luar?write=true 257ms
npm http fetch PUT 404 https://registry.npmjs.org/luar/-rev/5-260b27ca1cdb4a5d3b4175578e1c0300 99ms
npm verb stack Error: 404 Not Found - PUT https://registry.npmjs.org/luar/-rev/5-260b27ca1cdb4a5d3b4175578e1c0300 - Not found
npm verb stack     at /usr/lib/node_modules/npm/node_modules/npm-registry-fetch/check-response.js:114:15
npm verb stack     at processTicksAndRejections (internal/process/task_queues.js:93:5)
npm verb statusCode 404
npm verb pkgid [email protected]
...
npm ERR! code E404
npm ERR! 404 Not Found - PUT https://registry.npmjs.org/luar/-rev/5-260b27ca1cdb4a5d3b4175578e1c0300 - Not found
npm ERR! 404 
npm ERR! 404  '[email protected]' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
...

Tener el mismo problema al ejecutar npm deprecate : recuperar un 404 Not Found. La causa fue porque no me autenticé correctamente ( npm adduser solucionó), pero la salida No encontrado lo lleva por la tangente. Incluso si no hay posibilidad de que la API del servidor devuelva un código de estado diferente (como un 401), algunos resultados de estos comandos para sugerir el inicio de sesión serían buenos. La salida podría ser genérica y mostrarse siempre ("¡asegúrese de haber iniciado sesión!") O podría mostrarse si no tiene un authToken presente.

¡Pero estoy conectado! Esto es exactamente en la misma sesión de terminal donde acabo de publicar una nueva versión como propietario del paquete.

¡Ups! No importa eso, acabo de cerrar sesión y volver a iniciar sesión y ahora ambas funciones funcionan, extraño, ¡perdón por la confusión!

@luawtf Ah, en ese caso, parece que esta es la misma situación que la mía: estos comandos muestran 404 No encontrado cuando el problema real está relacionado con la autenticación.

¡Sí! Estoy de acuerdo en que un error más general y detallado sería genial.
Además, ¿por qué el registro devuelve un 404 cuando un 401 no autorizado tendría más sentido, no debería solucionarse también?

Convenido. Parece extraño para los paquetes que ya son públicos: no hay nada que ganar en seguridad al devolver un 404 en lugar de un 401 en este caso. Tendría sentido si un paquete fuera privado, al igual que GitHub muestra un 404 si intentas acceder a un repositorio privado cuando cierras la sesión para no revelar el hecho de que hay algo en esa URL.

Puedo confirmar que el problema fue que no había iniciado sesión.
Devolver un 401 o tener un mensaje de advertencia sobre no haber iniciado sesión me suena bien.

también nos encontramos con esto con un paquete público. npm unpublish @scope/package<strong i="5">@version</strong> --verbose muestra un 404, pero de lo contrario la anulación de la publicación parece tener éxito

Tengo el mismo problema, no puedo deprecate un paquete mío. Supuse que tenía algo que ver con el alcance del paquete, ya que noté que la barra inclinada en el nombre del paquete se muestra como %2f en la URL, pero realmente no entiendo qué está pasando.

$ node -v
v14.15.0
$ npm -v
6.14.8
$ npm deprecate @alling/foo-bar "This package should not be used."
npm ERR! code E404
npm ERR! 404 Not Found - PUT https://registry.npmjs.org/@alling%2ffoo-bar - Not found
npm ERR! 404 
npm ERR! 404  '@alling/foo-bar<strong i="9">@latest</strong>' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

@SimonAlling ¿qué sucede con npm v7.0.11?

@SimonAlling ¿qué sucede con npm v7.0.11?

$ docker run -it node bash
# npm -v
7.0.8
# npm login
Logged in as alling on https://registry.npmjs.org/.
npm notice 
npm notice New patch version of npm available! 7.0.8 -> 7.0.11
npm notice Changelog: https://github.com/npm/cli/releases/tag/v7.0.11
npm notice Run npm install -g [email protected] to update!
npm notice 
# npm deprecate nonexisting-package-asdfasdf LOL
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/nonexisting-package-asdfasdf?write=true
npm ERR! 404 
npm ERR! 404  'nonexisting-package-asdfasdf<strong i="8">@latest</strong>' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
# npm deprecate @alling/foo-bar "This package should not be used."

Ningún error u otro resultado, pero no apareció ningún mensaje de desaprobación en la página del paquete (es decir, https://www.npmjs.com/package/@alling/foo-bar), incluso después de media hora, así que intenté ejecutar el comando de nuevo:

# npm deprecate @alling/foo-bar "This package should not be used."
npm ERR! code E422
npm ERR! 422 Unprocessable Entity - PUT https://registry.npmjs.org/@alling%2ffoo-bar - Unprocessable Entity

Sin embargo, si voy a una versión específica del paquete (por ejemplo, https://www.npmjs.com/package/@alling/foo-bar/v/1.1.6), veo el mensaje de desaprobación esperado *. Pero también quiero que aparezca en la página principal del paquete (como, por ejemplo, urix ).

* Última versión: _Este paquete ha quedado obsoleto_. Cualquier otra versión: _Esta versión ha quedado obsoleta_.

EDITAR: El mensaje de obsolescencia finalmente apareció en la página principal del paquete.

Eso es usando npm v7.0.8; ¿puedes npm install -g npm@7 antes de ejecutar el comando deprecate?

El mensaje de obsolescencia finalmente apareció en la página principal del paquete, así que creo que funciona con npm v7.0.8. : leve_sonriente_cara:

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