尝试 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 &lt;package_name&gt;@&lt;version&gt;

【讨论】:

以上是关于尝试 NPM 发布以前未发布的版本时出错的主要内容,如果未能解决你的问题,请参考以下文章

运行“npm runeject”时出错。错误“删除未跟踪的文件,存储或提交任何更改,然后重试。”

npm 安装时出错

在 npm 中发布新版本的包时出错

安装cordova-sqlite-storage时出错

在量角器中安装 geckodriver 时出错 - npm install --save geckodriver

在 Windows 上运行 npm 命令时出错:graceful-fs