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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:03:09