使用Caliper v0.6.0测试Fabric v3.0.0时遇多绑定错误求助
在Ubuntu 22.04系统上使用Hyperledger Fabric v3.0.0搭配Caliper v0.6.0进行性能评估,已完全重建Fabric网络并严格遵循Caliper官方教程步骤操作,但执行以下基准测试命令时:
npx caliper launch manager --caliper-workspace ./ --caliper-networkconfig networks/networkConfig.yaml --caliper-benchconfig benchmarks/myAssetBenchmark.yaml --caliper-flow-only-test
出现如下错误:
2024.12.03-13:47:32.435 info [caliper] [cli-launch-manager] 设置工作区路径: /home/umit/Desktop/HLF-3-0-0/caliper-workspace
2024.12.03-13:47:32.437 info [caliper] [cli-launch-manager] 设置基准测试配置路径: /home/umit/Desktop/HLF-3-0-0/caliper-workspace/benchmarks/myAssetBenchmark.yaml
2024.12.03-13:47:32.437 info [caliper] [cli-launch-manager] 设置网络配置路径: /home/umit/Desktop/HLF-3-0-0/caliper-workspace/networks/networkConfig.yaml
2024.12.03-13:47:32.437 info [caliper] [cli-launch-manager] 设置SUT类型: fabric
2024.12.03-13:47:33.155 info [caliper] [benchmark-validator] 未指定观察者,将默认使用none
2024.12.03-13:47:33.155 info [caliper] [caliper-engine] 启动基准测试流程
2024.12.03-13:47:33.157 info [caliper] [caliper-engine] 由于基准测试流程条件限制,跳过启动命令
2024.12.03-13:47:33.159 info [caliper] [caliper-engine] 由于基准测试流程条件限制,跳过初始化阶段
2024.12.03-13:47:33.160 info [caliper] [caliper-engine] 由于基准测试流程条件限制,跳过智能合约安装阶段
2024.12.03-13:47:40.344 error [caliper] [caliper-engine] 执行"测试"步骤时出错: Error: 检测到多个Fabric绑定,你需要解绑一个或多个以确保仅存在单个绑定才能继续
at _determineInstalledNodeSDKandVersion (/home/umit/node_modules/@hyperledger/caliper-fabric/lib/FabricConnectorFactory.js:52:19)
at CaliperEngine.connectorFactory [as adapterFactory] (/home/umit/node_modules/@hyperledger/caliper-fabric/lib/FabricConnectorFactory.js:132:17)
at CaliperEngine.run (/home/umit/node_modules/@hyperledger/caliper-cli/node_modules/@hyperledger/caliper-core/lib/manager/caliper-engine.js:149:64)
at LaunchManager.handler (/home/umit/node_modules/@hyperledger/caliper-cli/lib/launch/lib/launchManager.js:81:43)
at module.exports.handler (/home/umit/node_modules/@hyperledger/caliper-cli/lib/launch/launchManagerCommand.js:46:44)
at Object.runCommand (/home/umit/node_modules/@hyperledger/caliper-cli/node_modules/yargs/lib/command.js:240:40)
at Object.parseArgs [as _parseArgs] (/home/umit/node_modules/@hyperledger/caliper-cli/node_modules/yargs/yargs.js:1154:41)
at Object.runCommand (/home/umit/node_modules/@hyperledger/caliper-cli/node_modules/yargs/lib/command.js:198:30)
at Object.parseArgs [as _parseArgs] (/home/umit/node_modules/@hyperledger/caliper-cli/node_modules/yargs/yargs.js:1154:41)
at Object.get [as argv] (/home/umit/node_modules/@hyperledger/caliper-cli/node_modules/yargs/yargs.js:1088:21)
2024.12.03-13:47:40.345 info [caliper] [caliper-engine] 由于基准测试流程条件限制,跳过结束命令
2024.12.03-13:47:40.345 error [caliper] [cli-launch-manager] 基准测试执行失败,错误代码: 6
使用方法:
caliper launch manager --caliper-bind-sut fabric:2.2 [其他选项]选项:
--help, -h 显示使用信息 [布尔值]
--version 显示版本信息 [布尔值]
--caliper-bind-sut 要绑定的平台名称和版本 [字符串]
--caliper-bind-cwd 执行SDK安装的工作目录 [字符串]
--caliper-bind-args 传递给"npm install"的额外参数。设置此参数时使用"="符号 [字符串]
--caliper-bind-file 用于覆盖绑定SDK时默认(支持的)包版本的Yaml文件 [字符串]Error: 基准测试执行失败,错误代码: 6
at LaunchManager.handler (/home/umit/node_modules/@hyperledger/caliper-cli/lib/launch/lib/launchManager.js:89:23)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
这个错误是因为Caliper检测到多个Fabric Node SDK绑定版本,无法确定使用哪一个,按以下步骤处理:
清理现有依赖:进入你的caliper-workspace目录,删除已安装的依赖和锁文件:
rm -rf node_modules package-lock.json重新绑定对应版本的SDK:针对Fabric v3.0.0,执行绑定命令,确保安装适配的SDK:
npx caliper bind --caliper-bind-sut fabric:3.0 --caliper-bind-cwd ./重新运行测试:绑定完成后,再次执行你的基准测试命令:
npx caliper launch manager --caliper-workspace ./ --caliper-networkconfig networks/networkConfig.yaml --caliper-benchconfig benchmarks/myAssetBenchmark.yaml --caliper-flow-only-test额外检查项:
- 确保系统中没有全局安装多个版本的Fabric SDK,避免干扰本地绑定
- 核对
networkConfig.yaml中的配置,确保版本信息和绑定的SDK一致
内容的提问来源于stack exchange,提问作者umitkilic

