Cli: [ОШИБКА] npm unpublish возвращает ошибку 404 и не выводит ошибку, если не используется подробный лог.

Созданный на 29 июн. 2020  ·  14Комментарии  ·  Источник: npm/cli

Что почему

npm unpublish не работает и не показывает никаких ошибок, даже если реестр отвечает кодом 404.

когда

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

где

публичный реестр npm

Как

Текущее поведение

Командная строка печатает только

а сервер отвечает с ошибкой 404.

Кроме того, конечная точка https://registry.npmjs.org/@siliceum%2fcalcite-cli возвращает информацию, но версия с ?write=true ( https://registry.npmjs.org/@siliceum%2fcalcite-cli?write=true ) возвращает ошибку 404 not found.

Действия по воспроизведению

npm unpublish @siliceum/[email protected]

Ожидаемое поведение

Пакет либо не опубликован, либо печатается ошибка. (в конечном счете, что-то еще, кроме 404).
На уровне подробного журнала можно получить следующий вывод

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

npm info это сработало, если оканчивается на ОК
npm глагол cli [
npm глагол cli 'C: \ Program Files \ nodejs \ node.exe',
npm verb cli 'C: \ Program Files \ nodejs \ node_modules \ npm \ bin \ npm-cli.js',
npm глагол cli 'отменить публикацию',
npm глагол cli '@ siliceum / [email protected] ',
npm глагол cli '--loglevel',
npm глагол cli 'подробный'
npm глагол cli]
информация npm с использованием [email protected]
информация npm с использованием [email protected]
глагол npm npm-session e43c8f8257e968e5
npm http fetch GET 404 https://registry.npmjs.org/@siliceum%2fcalcite-cli ? write = true 492 мс

  • @ siliceum / [email protected]
    npm глагол exit [0, истина]
    npm тайминги npm Завершено за 1157 мс
    npm информация в порядке

Самый полезный комментарий

Ой! Неважно, я только что вышел из системы и снова вошел в систему, и теперь обе функции работают, странно, извините за путаницу!

Все 14 Комментарий

Также возникла эта проблема с npm unpublish и 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.
...

Та же проблема при запуске npm deprecate - возврат 404 Not Found. Причина заключалась в том, что я не прошел аутентификацию правильно ( npm adduser разобрал), но вывод Not Found ведет вас по касательным. Даже если у API сервера нет возможности вернуть другой код состояния (например, 401), некоторые выходные данные этих команд, предлагающие войти в систему, будут хороши. Вывод может быть общим и всегда отображаться («убедитесь, что вы вошли в систему!») Или может отображаться, если у вас нет authToken.

Но я авторизован! Это в том же сеансе терминала, где я только что опубликовал новую версию как владелец пакета.

Ой! Неважно, я только что вышел из системы и снова вошел в систему, и теперь обе функции работают, странно, извините за путаницу!

@luawtf А, в этом случае похоже, что это та же ситуация, что и у меня - эти команды отображают 404 Not Found, когда фактическая проблема связана с аутентификацией.

Ага! Я согласен с тем, что было бы здорово допустить более общую и подробную ошибку.
Кроме того, почему реестр возвращает 404, если 401 Неавторизованный имеет больше смысла, не следует ли это также исправить?

Согласовано. Кажется странным для пакетов, которые уже являются общедоступными - в этом случае нет ничего лучше с точки зрения безопасности, возвращая 404, а не 401. Было бы разумно, если бы пакет был частным, так же как GitHub показывает 404, если вы пытаетесь получить доступ к частному репо при выходе из системы, чтобы не выдать тот факт, что по этому URL-адресу что-то вообще есть.

Я могу подтвердить, что проблема заключалась в том, что я не был авторизован.
Мне кажется, что возвращение 401 или сообщение с предупреждением о том, что вы не вошли в систему, звучат хорошо.

мы также столкнулись с этим с общедоступным пакетом. npm unpublish @scope/package<strong i="5">@version</strong> --verbose показывает 404, но в остальном отмена публикации кажется успешной

У меня та же проблема, что я не могу deprecate свой пакет. Я предположил, что это как-то связано с областью действия пакета, поскольку я заметил, что косая черта в имени пакета отображается как %2f в URL-адресе, но я действительно не понимаю, что происходит.

$ 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, что происходит с npm v7.0.11?

@SimonAlling, что происходит с 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."

Никаких ошибок или других выходных данных, но на странице пакета (например, https://www.npmjs.com/package/@alling/foo-bar) не появлялось сообщения об устаревании даже через полчаса, поэтому я попытался запустить команду снова:

# 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

Однако, если я перейду к определенной версии пакета (например, https://www.npmjs.com/package/@alling/foo-bar/v/1.1.6), я увижу ожидаемое сообщение об устаревании *. Но я хочу, чтобы он также отображался на главной странице пакета (например, urix ).

* Последняя версия: _Этот пакет устарел_. Любая другая версия: _Эта версия устарела_.

EDIT: сообщение об устаревании наконец появилось на главной странице пакета.

Это использует npm v7.0.8; можно npm install -g npm@7 перед запуском команды deprecate?

Сообщение об устаревании наконец появилось на главной странице пакета, поэтому я считаю, что он работает с npm v7.0.8. : Little_smiling_face:

Была ли эта страница полезной?
0 / 5 - 0 рейтинги