Cli: [BUG] npm unpublish renvoie l'erreur 404 et aucune erreur n'est affichée sauf si le niveau de journalisation détaillé est utilisé

Créé le 29 juin 2020  ·  14Commentaires  ·  Source: npm/cli

Quoi / Pourquoi

npm unpublish ne fonctionne pas et n'affiche aucune erreur même si le registre répond avec un code 404.

Quand

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

registre public npm

Comment

Comportement actuel

La ligne de commande imprime uniquement

tandis que le serveur répond avec une erreur 404.

De plus, le point https://registry.npmjs.org/@siliceum%2fcalcite-cli terminaison ?write=true ( https://registry.npmjs.org/@siliceum%2fcalcite-cli?write=true ) renvoie une erreur 404 introuvable.

Étapes à suivre pour reproduire

npm unpublish @siliceum/[email protected]

Comportement prévisible

Le package n'est pas publié ou une erreur est imprimée. (finalement, autre chose qu'une 404).
Avec le niveau de journalisation détaillé, il est possible d'avoir la sortie suivante

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

npm info ça a marché si ça se termine par ok
npm verbe cli [
npm verbe cli 'C: \ Program Files \ nodejs \ node.exe',
npm verbe cli 'C: \ Program Files \ nodejs \ node_modules \ npm \ bin \ npm-cli.js',
npm verbe cli 'unpublish',
npm verbe cli '@ siliceum / [email protected] ',
npm verbe cli '--loglevel',
npm verbe cli 'verbose'
npm verbe cli]
info npm en utilisant [email protected]
npm info en utilisant [email protected]
npm verbe npm-session e43c8f8257e968e5
npm http chercher GET 404 https://registry.npmjs.org/@siliceum%2fcalcite-cli ? write = true 492ms

  • @ siliceum / [email protected]
    npm verbe exit [0, true]
    npm timing npm Terminé en 1157 ms
    npm info ok
Bug

Commentaire le plus utile

Oops! Tant pis, je viens de me déconnecter et de me reconnecter et maintenant les deux fonctions fonctionnent, bizarre, désolé pour la confusion!

Tous les 14 commentaires

J'ai également ce problème avec npm unpublish et 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.
...

Avoir le même problème lors de l'exécution de npm deprecate - récupérer un 404 introuvable. La cause était parce que je n'étais pas authentifié correctement ( npm adduser trié) - mais la sortie Not Found vous conduit sur les tangentes. Même s'il n'y a aucune possibilité pour l'API du serveur de renvoyer un code d'état différent (comme un 401), certaines sorties de ces commandes suggérant de se connecter seraient bonnes. La sortie peut être générique et toujours affichée ("assurez-vous que vous êtes connecté!") Ou peut être affichée si vous n'avez pas de authToken présent.

Mais je suis connecté! C'est exactement dans la même session de terminal où je viens de publier une nouvelle version en tant que propriétaire du package

Oops! Tant pis, je viens de me déconnecter et de me reconnecter et maintenant les deux fonctions fonctionnent, bizarre, désolé pour la confusion!

@luawtf Ah, dans ce cas, on dirait que c'est la même situation que la mienne - ces commandes affichent 404 Not Found lorsque le problème réel est lié à l'authentification.

Oui! Je conviens qu'une erreur plus générale et verbeuse serait formidable.
Aussi, pourquoi le registre renvoie-t-il un 404 alors qu'un 401 non autorisé aurait plus de sens, cela ne devrait-il pas également être corrigé?

D'accord. Cela semble étrange pour les paquets déjà publics - il n'y a rien à gagner en termes de sécurité en renvoyant un 404 plutôt qu'un 401 dans ce cas. Cela aurait du sens si un package était privé, un peu comme la façon dont GitHub affiche un 404 si vous essayez d'accéder à un dépôt privé lorsque vous êtes déconnecté afin de ne pas révéler le fait qu'il y a quoi que ce soit à cette URL.

Je peux confirmer que le problème était que je n'étais pas connecté.
Renvoyer un 401 ou avoir un message d'avertissement de ne pas être connecté me semble bon.

nous avons rencontré cela avec un paquet public également. npm unpublish @scope/package<strong i="5">@version</strong> --verbose affiche un 404, mais autrement la dépublication semble réussir

J'ai le même problème, étant incapable de deprecate un de mes paquets. J'ai supposé que cela avait quelque chose à voir avec la portée du package, car j'ai remarqué que la barre oblique dans le nom du package est affichée comme %2f dans l'URL, mais je ne comprends vraiment pas ce qui se passe.

$ 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 que se passe-t-il avec npm v7.0.11?

@SimonAlling que se passe-t-il avec 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."

Aucune erreur ou autre sortie, mais aucun message d'obsolescence n'est apparu sur la page du package (c'est-à-dire https://www.npmjs.com/package/@alling/foo-bar), même après environ une demi-heure, j'ai donc essayé d'exécuter le commande à nouveau:

# 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

Cependant, si je vais à une version spécifique du package (par exemple https://www.npmjs.com/package/@alling/foo-bar/v/1.1.6), je vois le message de dépréciation attendu *. Mais je veux qu'il apparaisse également sur la page principale du package (comme par exemple urix ).

* Dernière version: _Ce package est obsolète_. Toute autre version: _Cette version est obsolète_.

EDIT: Le message d'obsolescence est finalement apparu sur la page principale du package.

Cela utilise npm v7.0.8; pouvez-vous npm install -g npm@7 avant d'exécuter la commande obsolète?

Le message d'obsolescence est finalement apparu sur la page principale du package, donc je pense qu'il fonctionne avec npm v7.0.8. : légèrement_smiling_face:

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

Questions connexes

CliffS picture CliffS  ·  3Commentaires

darcyclarke picture darcyclarke  ·  3Commentaires

FaizenR picture FaizenR  ·  3Commentaires

goldingdamien picture goldingdamien  ·  4Commentaires

theADAMJR picture theADAMJR  ·  3Commentaires