尝试 NPM 发布以前未发布的版本时出错
Posted
技术标签:
【中文标题】尝试 NPM 发布以前未发布的版本时出错【英文标题】:Error when trying to NPM Publish previously unpublished version 【发布时间】:2014-03-24 00:51:00 【问题描述】:在宿醉时开发 NPM 模块(很棒的计划),我碰到了错误的版本。 “没问题”我想。 “我以前做过,用npm unpublish <module>@<version>
解决了。”我这样做并尝试重新发布,但它抛出错误“无法替换以前发布的版本”,尽管此版本不存在。
我决定去核。我的包只有 10 个版本,所以我决定做 npm unpublish <module> --force
并从 v0.0.1 重新开始。我仍然收到“无法替换以前发布的版本”。
帮助!!!我该如何解决这个问题,以便我可以放回我的包裹?
下面的错误日志
npm publish v0.0.1.tar.gz
npm http PUT https://registry.npmjs.org/datautils
npm http 403 https://registry.npmjs.org/datautils
npm http PUT https://registry.npmjs.org/datautils
npm http 403 https://registry.npmjs.org/datautils
npm ERR! publish Failed PUT 403
npm ERR! Error: forbidden Cannot replace previously published version: 0.0.1: datautils
npm ERR! at RegClient.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:275:14)
npm ERR! at Request.self.callback (/usr/local/lib/node_modules/npm/node_modules/request/request.js:123:22)
npm ERR! at Request.EventEmitter.emit (events.js:98:17)
npm ERR! at Request.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/request/request.js:893:14)
npm ERR! at Request.EventEmitter.emit (events.js:117:20)
npm ERR! at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/request/request.js:844:12)
npm ERR! at IncomingMessage.EventEmitter.emit (events.js:117:20)
npm ERR! at _stream_readable.js:920:16
npm ERR! at process._tickCallback (node.js:415:13)
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! System Linux 3.11.0-12-generic
npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "publish" "datautils-js-0.0.1.tar.gz"
npm ERR! cwd /home/semms/Desktop/datautils
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.24
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/semms/Desktop/datautils/npm-debug.log
npm ERR! not ok code 0
【问题讨论】:
【参考方案1】:你不能再这样做了。
https://github.com/npm/npmjs.org/issues/148
TLDR:当您取消发布一个版本,然后再发布其他内容时,您可能会破坏人们的代码,因此很糟糕。
【讨论】:
我看到这个并且同意这个逻辑。但是我已经能够取消发布包(从而破坏代码)并且无法将其放回。 逻辑是:当你取消发布包/版本时,错误将立即弹出,当有人这样做时npm install
。当你替换它时,它会工作,新的和不可靠的代码可以投入生产。
完全同意@RiggerTheGeek。它不应该允许取消发布。【参考方案2】:
如果包小于 24 小时
,您可以取消发布包npm unpublish --force <package_name>@<version>
【讨论】:
以上是关于尝试 NPM 发布以前未发布的版本时出错的主要内容,如果未能解决你的问题,请参考以下文章
运行“npm runeject”时出错。错误“删除未跟踪的文件,存储或提交任何更改,然后重试。”