如何解决Metaplex candy-machine-v2源码第845行TypeError报错?
Metaplex Candy Machine V2 更新时报
Cannot read properties of undefined (reading 'program') 修复方案 报错基础信息
- 触发场景:执行Candy Machine V2更新命令时抛出
- 报错位置:
C:\Users\Hardy V\Desktop\solana-nft-T1\metaplex-master\js\packages\cli\src\candy-machine-v2-cli.ts:845 - 报错对应源码行:
const candyMachine = new PublicKey(cacheContent.program.candyMachine); - 核心报错信息:
TypeError: Cannot read properties of undefined (reading 'program'),即代码尝试从undefined值上读取program属性
根因定位
报错的直接原因是执行到该行时cacheContent变量为undefined,CLI没有成功加载到糖果机的本地缓存,常见触发场景:
- 执行更新命令时未传入和创建糖果机时一致的
-e/--env网络参数,CLI默认查找devnet环境缓存,对应缓存文件不存在 - 执行命令的终端工作目录错误,CLI无法读取到当前目录下
.cache文件夹内的对应网络缓存文件 - 本地
.cache目录下的缓存文件被误删、修改损坏,JSON解析失败导致cacheContent无法正常赋值
修复操作
- 确认创建糖果机时使用的Solana网络(devnet/testnet/mainnet-beta),执行更新命令时显式指定匹配的网络参数,主网更新命令参考:
ts-node candy-machine-v2-cli.ts update_candy_machine -e mainnet-beta -k <你的本地钱包路径> -cp <糖果机配置文件路径> - 执行命令前先确认当前终端工作目录为Candy Machine CLI的根目录,目录下存在
.cache文件夹,且文件夹内包含对应网络的缓存文件(命名规则一般为temp-<网络名>.json) - 如果缓存文件已丢失,直接通过Solana链上浏览器查询你之前部署的Candy Machine账户地址,手动在
.cache目录下创建对应网络的缓存文件,补全program.candyMachine字段为你的糖果机公钥后即可正常执行更新操作。
内容的提问来源于stack exchange,提问作者Hardee Shareef
相关产品推荐
相关产品推荐

