Hyperledger Caliper生成基准测试时遇node:events:491错误如何解决?
解决Hyperledger Caliper v0.3.2基准测试生成器的
cwd未定义错误 这个错误是由于Yeoman生成器调用文件复制方法时,未正确传递当前工作目录参数导致的,通常和依赖版本不兼容或执行环境有关,可按以下步骤解决:
1. 切换到兼容的Node.js版本
Caliper v0.3.2仅支持Node.js 12.x或14.x版本,高版本Node.js会引发依赖兼容问题:
- 使用nvm切换版本:
nvm install 14 nvm use 14
2. 重新安装匹配版本的Caliper生成器
确保全局和本地项目的生成器版本与Caliper v0.3.2完全一致:
- 卸载现有生成器:
npm uninstall -g @hyperledger/generator-caliper - 安装指定版本:
npm install -g @hyperledger/generator-caliper@0.3.2 - 如果是在本地项目中使用,同步本地依赖:
npm install @hyperledger/generator-caliper@0.3.2 --save-dev
3. 在正确的目录下执行生成命令
必须在已初始化的npm项目目录中运行生成器:
- 创建并进入新目录:
mkdir caliper-bench && cd caliper-bench - 初始化npm项目:
npm init -y - 再次执行生成命令:
yo caliper:benchmark
4. 手动修复生成器代码(备选方案)
如果上述方法无效,可直接修改生成器的代码,手动传递cwd参数:
- 打开生成器的核心文件:
/home/jolly/node_modules/@hyperledger/generator-caliper/generators/benchmark/index.js - 找到第196行的
copyTpl调用,添加cwd配置项:
修改前:
修改后:this.fs.copyTpl( this.templatePath('workload'), this.destinationPath(workloadDir), templateData );this.fs.copyTpl( this.templatePath('workload'), this.destinationPath(workloadDir), templateData, {}, { cwd: this.templatePath() } ); - 保存文件后重新执行生成命令。
内容的提问来源于stack exchange,提问作者Lady
相关产品推荐
相关产品推荐

