You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Artifactory迁移NPM制品至新仓库时生成0字节package.json的问题求助

Artifactory移动NPM制品后无法生成package.json:"List argument metadata must not be empty" 问题解析与解决

报错含义说明

Failed precondition. List argument metadata must not be empty 是Artifactory在生成NPM仓库的聚合package.json时触发的异常:
Artifactory的NPM元数据索引逻辑会收集同包名下所有版本的元数据,用于生成包含所有版本信息的聚合package.json。当该元数据列表为空时,代码中的非空校验失败,直接抛出此异常,导致聚合package.json生成失败。

从堆栈跟踪可以看到,异常触发点在NpmUtils.updateAndGetLatest方法——该方法需要从元数据列表中筛选最新版本,但列表为空时无法完成逻辑,因此抛出错误。

问题根因分析

结合你遇到的场景,问题源于Artifactory特定版本的元数据索引逻辑缺陷:

  • 首次发布制品时,Artifactory直接从上传的制品包中提取元数据,流程完整,能正常生成聚合package.json;
  • 当将单个版本的制品迁移/推广到无同包其他版本的空仓库时,Artifactory未能正确从已迁移的制品中提取元数据,导致元数据列表为空,触发校验失败;
  • 当目标仓库中已有同@<group>/<artifactid>的其他版本制品时,元数据列表不为空,索引逻辑能正常执行,因此可以生成有效的聚合package.json。

该问题在Artifactory 7.46.11和7.49.5版本中可复现,属于版本特定bug。

缓解与解决方法

临时缓解方案

  1. 先迁移同包的其他版本
    先将同@<group>/<artifactid>下的任意其他版本制品迁移到目标仓库,再迁移目标版本。此时元数据列表不为空,索引逻辑可正常执行,生成聚合package.json。
  2. 手动触发仓库索引重建
    • 登录Artifactory后台,进入目标NPM仓库的仓库设置页面
    • 找到索引模块,点击重建索引(Rebuild Index)
    • 等待索引任务完成后,检查目标路径.npm/@<group>/<artifactid>/package.json是否生成
  3. 手动上传聚合package.json
    从原仓库复制该制品对应的聚合package.json,手动上传到目标仓库的.npm/@<group>/<artifactid>/路径下,直接补全缺失的元数据文件。

长期解决方案

升级Artifactory到7.50及以上版本——JFrog在后续版本中修复了该元数据索引逻辑缺陷,彻底解决单个版本制品迁移后无法生成聚合package.json的问题。

内容的提问来源于stack exchange,提问作者Sander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 23:40:22