Cli: [BUG] npm unpublish gibt den Fehler 404 zurück und es wird kein Fehler gedruckt, es sei denn, es wird eine ausführliche Google-Ebene verwendet

Erstellt am 29. Juni 2020  ·  14Kommentare  ·  Quelle: npm/cli

Was warum

npm unpublish funktioniert nicht und zeigt keinen Fehler an, obwohl die Registrierung mit einem Code 404 antwortet.

Wann

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

Wo

npm öffentliches Register

Wie

Aktuelles Verhalten

Die Befehlszeile wird nur gedruckt

während der Server mit einem Fehler 404 antwortet.

Außerdem gibt der Endpunkt https://registry.npmjs.org/@siliceum%2fcalcite-cli Informationen zurück, aber die Version mit ?write=true ( https://registry.npmjs.org/@siliceum%2fcalcite-cli?write=true ) gibt einen Fehler 404 zurück, der nicht gefunden wurde.

Schritte zum Reproduzieren

npm unpublish @siliceum/[email protected]

Erwartetes Verhalten

Das Paket ist entweder unveröffentlicht oder es wird ein Fehler gedruckt. (letztendlich etwas anderes als ein 404).
Mit dem ausführlichen loglevel ist es möglich, die folgende Ausgabe zu haben

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

npm info es hat funktioniert wenn es mit ok endet
npm verb cli [
npm verb cli 'C: \ Programme \ nodejs \ node.exe',
npm verb cli 'C: \ Programme \ nodejs \ node_modules \ npm \ bin \ npm-cli.js',
npm verb cli 'unpublish',
npm verb cli '@ siliceum / [email protected] ',
npm verb cli '--loglevel',
npm verb cli 'verbose'
npm verb cli]
npm info mit [email protected]
npm info using [email protected]
npm verb npm-session e43c8f8257e968e5
npm http fetch GET 404 https://registry.npmjs.org/@siliceum%2fcalcite-cli ? write = true 492ms

  • @ siliceum / [email protected]
    npm verb exit [0, true]
    npm Timing npm Abgeschlossen in 1157ms
    npm info ok
Bug

Hilfreichster Kommentar

Hoppla! Vergiss nicht, ich habe mich gerade abgemeldet und wieder angemeldet und jetzt funktionieren beide Funktionen, komisch, entschuldige die Verwirrung!

Alle 14 Kommentare

Auch dieses Problem mit npm unpublish und 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.
...

Das gleiche Problem beim Ausführen von npm deprecate - Zurückerhalten eines 404 Not Found. Die Ursache war, dass ich nicht korrekt authentifiziert wurde ( npm adduser aussortiert) - aber die Ausgabe "Nicht gefunden" führt Sie zu Tangenten. Selbst wenn die Server-API keinen anderen Statuscode (z. B. 401) zurückgeben kann, sind einige Ausgaben dieser Befehle, die darauf hindeuten, dass Sie sich anmelden, gut. Die Ausgabe kann generisch sein und immer angezeigt werden ("Stellen Sie sicher, dass Sie angemeldet sind!") Oder angezeigt werden, wenn kein authToken vorhanden ist.

Aber ich bin eingeloggt! Dies ist genau die gleiche Terminalsitzung, in der ich gerade eine neue Version als Eigentümer des Pakets veröffentlicht habe

Hoppla! Vergiss nicht, ich habe mich gerade abgemeldet und wieder angemeldet und jetzt funktionieren beide Funktionen, komisch, entschuldige die Verwirrung!

@luawtf Ah, in diesem Fall klingt es so, als wäre dies die gleiche Situation wie bei mir - diese Befehle zeigen 404 Not Found an, wenn das eigentliche Problem mit der Authentifizierung zusammenhängt.

Ja! Ich stimme zu, dass ein allgemeinerer und ausführlicherer Fehler großartig wäre.
Warum gibt die Registrierung einen 404 zurück, wenn ein 401 Unauthorized sinnvoller wäre? Sollte dies nicht auch behoben werden?

Einverstanden. Scheint seltsam für Pakete, die bereits öffentlich sind - in Bezug auf die Sicherheit kann in diesem Fall nichts durch die Rückgabe eines 404 anstelle eines 401 erreicht werden. Es wäre sinnvoll, wenn ein Paket privat wäre, ähnlich wie GitHub einen 404 anzeigt, wenn Sie versuchen, beim Abmelden auf ein privates Repo zuzugreifen, um nicht zu verraten, dass an dieser URL überhaupt etwas vorhanden ist.

Ich kann bestätigen, dass das Problem darin bestand, dass ich nicht angemeldet war.
Die Rückgabe eines 401 oder die Meldung, dass beide nicht angemeldet sind, klingt für mich gut.

Wir sind auch mit einem öffentlichen Paket darauf gestoßen. npm unpublish @scope/package<strong i="5">@version</strong> --verbose zeigt eine 404 an, aber ansonsten scheint die Veröffentlichung nicht erfolgreich zu sein

Ich habe das gleiche Problem, weil ich nicht in der Lage bin, ein Paket von mir zu deprecate . Ich nahm an, dass dies etwas mit dem Umfang des Pakets zu tun hat , da ich bemerkte, dass der Schrägstrich im Paketnamen in der URL als %2f angezeigt wird, aber ich verstehe wirklich nicht, was los ist.

$ 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 was passiert mit npm v7.0.11?

@SimonAlling was passiert mit 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."

Auf der Paketseite (z. B. https://www.npmjs.com/package/@alling/foo-bar) wurde auch nach etwa einer halben Stunde kein Fehler oder eine andere Ausgabe angezeigt, aber keine Verfallsmeldung. Deshalb habe ich versucht, das auszuführen Befehl noch einmal:

# 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

Wenn ich jedoch zu einer bestimmten Version des Pakets gehe (z. B. https://www.npmjs.com/package/@alling/foo-bar/v/1.1.6), wird die erwartete Verfallsmeldung * angezeigt. Aber ich möchte, dass es auch auf der Hauptpaketseite angezeigt wird (wie z. B. urix ).

* Neueste Version: _Dieses Paket ist veraltet_. Jede andere Version: _Diese Version ist veraltet_.

BEARBEITEN: Die Verfallsmeldung wurde schließlich auf der Hauptpaketseite angezeigt.

Das benutzt npm v7.0.8; Können Sie npm install -g npm@7 bevor Sie den Befehl deprecate ausführen?

Die Verfallsmeldung wurde schließlich auf der Hauptpaketseite angezeigt, daher glaube ich, dass sie mit npm v7.0.8 funktioniert. : leicht_smiling_face:

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

ahuglajbclajep picture ahuglajbclajep  ·  3Kommentare

darcyclarke picture darcyclarke  ·  3Kommentare

CliffS picture CliffS  ·  3Kommentare

darcyclarke picture darcyclarke  ·  3Kommentare

zypA13510 picture zypA13510  ·  4Kommentare