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

执行Metaplex Candy Machine V2 upload命令报ENOENT找不到smart路径错误

问题场景

在Windows系统PowerShell终端进入本地Metaplex项目的metaplex-master目录,执行Candy Machine V2 CLI的upload命令,尝试将本地assets目录下的NFT资产上传至Solana devnet网络。命令中指定了本地devnet.json密钥路径、CLI配置文件路径,传入参数包含名为smart contract.json的配置文件与assets资产目录路径,执行后抛出错误。

执行命令
PS C:\Users\ahmad\Desktop\nft\metaplex-master> ts-node C:\Users\ahmad\Desktop\nft\metaplex-master\js\packages\cli\src\candy-machine-v2-cli.ts upload -e devnet -k C:\Users\ahmad\Desktop\nft\metaplex-master\devnet.json -cp C:\Users\ahmad\Desktop\nft\metaplex-master\js\packages\cli\config smart contract.json C:\Users\ahmad\Desktop\nft\metaplex-master\assets
错误信息

核心报错:错误类型为ENOENT,无对应文件或目录,无法对smart路径执行scandir扫描操作,错误码为-4058。
完整错误日志:

Error: ENOENT: no such file or directory, scandir 'smart'
at Object.readdirSync (node:fs:1405:3)
at Argument.parseArg (C:\Users\ahmad\Desktop\nft\metaplex-master\js\packages\cli\src\candy-machine-v2-cli.ts:97:17)
at myParseArg (C:\Users\ahmad\Desktop\nft\metaplex-master\js\packages\cli\node_modules\commander\lib\command.js:1095:34)
at C:\Users\ahmad\Desktop\nft\metaplex-master\js\packages\cli\node_modules\commander\lib\command.js:1127:19
at Array.forEach ()
at Command._processArguments (C:\Users\ahmad\Desktop\nft\metaplex-master\js\packages\cli\node_modules\commander\lib\command.js:1110:16)
at Command._parseCommand (C:\Users\ahmad\Desktop\nft\metaplex-master\js\packages\cli\node_modules\commander\lib\command.js:1230:12)
at Command._dispatchSubcommand (C:\Users\ahmad\Desktop\nft\metaplex-master\js\packages\cli\node_modules\commander\lib\command.js:1057:25)
at Command._parseCommand (C:\Users\ahmad\Desktop\nft\metaplex-master\js\packages\cli\node_modules\commander\lib\command.js:1200:19)
at Command.parse (C:\Users\ahmad\Desktop\nft\metaplex-master\js\packages\cli\node_modules\commander\lib\command.js:889:10) {
  errno: -4058,
  syscall: 'scandir',
  code: 'ENOENT',
  path: 'smart'
}
故障原因

配置文件名为smart contract.json,文件名包含空格。PowerShell默认将空格作为命令参数的分隔符,会自动把空格拆分后的内容识别为独立参数,因此命令中的smart contract.json被拆分为smart和contract.json两个独立位置参数传入CLI。Candy Machine V2 CLI接收到位置参数后,会将第一个位置参数作为资产目录路径执行扫描,因此尝试访问不存在的smart路径,触发ENOENT报错。

修复方案

任选以下一种方式处理即可:

  • 给带空格的文件路径加双引号包裹,强制PowerShell将其识别为同一个完整参数,修改后可直接执行,参考命令如下:
ts-node C:\Users\ahmad\Desktop\nft\metaplex-master\js\packages\cli\src\candy-machine-v2-cli.ts upload -e devnet -k C:\Users\ahmad\Desktop\nft\metaplex-master\devnet.json -cp C:\Users\ahmad\Desktop\nft\metaplex-master\js\packages\cli\config "smart contract.json" C:\Users\ahmad\Desktop\nft\metaplex-master\assets
  • 直接重命名配置文件,移除文件名中的空格,例如改为smart-contract.json,再将命令中对应的配置文件名替换为重命名后的名称即可执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:57:19