mainnet-beta上传Candy Machine触发arweave-bundle.ts报错排查
报错根因
核心触发原因是*./assets目录下存在不符合格式要求的NFT元数据JSON文件*:
- DevNet环境测试时使用的存储配置不会触发Arweave批量打包逻辑,不会校验
properties.files字段类型,因此格式错误不会暴露 - 切换为
arweave-sol存储模式后,CLI走Arweave bundle打包上传流程,getUpdatedManifest方法默认强制要求manifest.properties.files必须为数组类型,只要任意一个元数据文件中该字段为对象、字符串、null或直接缺失,调用forEach遍历时就会抛出该类型错误,直接中断上传流程。
修复步骤
- 批量检查assets目录下所有以数字命名的元数据JSON文件(0.json、1.json……),定位
properties.files字段格式错误的文件。该字段的标准格式为数组,正确示例如下:
{ "name": "NFT #0", "symbol": "TEST", "image": "0.png", "properties": { "files": [ { "uri": "0.png", "type": "image/png" } ], "category": "image" } }
- 修正所有错误格式的元数据:常见错误包括
files直接写为对象、用字符串填文件路径、字段缺失、字段值为null,统一修正为上述数组结构即可,数组内uri字段需和assets目录下的媒体文件名完全匹配。 - 删除项目根目录下
.cache文件夹中对应-c temp参数的mainnet-beta缓存文件,清除之前失败上传产生的错误缓存。 - 重新执行上传命令即可。
提示:当前钱包余额仅略高于预估上传成本,未预留链上手续费波动空间,建议至少补充到1.3 SOL后再执行上传,避免中途因余额不足中断。
内容的提问来源于stack exchange,提问作者GeexoCaptainB
相关产品推荐
相关产品推荐

