Google Artifact Registry删除同版本npm包后发布仍提示版本已存在
解决Google Artifact Registry删除旧版本后无法重发同版本npm包的问题
根本原因
该报错是Google Artifact Registry(GAR)的软删除机制导致的,并非本地npm缓存问题:GAR默认删除包版本后会保留30天的可恢复周期,被删除的版本号不会立刻释放,因此即便你在控制台手动删除了对应版本、npm view返回空结果,服务端仍然会判定该版本已存在。
解决方案
方案1:升级版本号发布(最高效)
直接修改项目package.json中的version字段,升级到未发布过的版本号(例如从0.1.3改为0.1.4),再执行npm publish即可正常发布,不需要额外配置操作。
方案2:强制永久删除软删除版本(需保留原版本号时使用)
如果你必须使用0.1.3这个版本号,可以通过gcloud命令强制清除软删除状态的版本,释放版本号:
- 先执行以下命令确认目标版本处于软删除列表中:
gcloud artifacts versions list --package=<替换为你的npm包名> --repository=<替换为你的GAR仓库名> --location=<替换为仓库所在区域> --show-deleted
- 执行永久删除命令:
gcloud artifacts versions delete 0.1.3 --package=<替换为你的npm包名> --repository=<替换为你的GAR仓库名> --location=<替换为仓库所在区域> --delete-forever
- 等待1-5分钟待GAR后台数据同步完成后,再执行
npm publish即可。
方案3:清理本地npm缓存(备选排查方案)
如果上述操作完成后仍然报错,可以尝试清理本地npm缓存排除本地异常:
npm cache clean --force
之后删除项目根目录下的package-lock.json文件和node_modules目录,重新执行npm install安装依赖后再尝试发布。
内容的提问来源于stack exchange,提问作者Ihor Sakailiuk
相关产品推荐
相关产品推荐

