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

Hyperledger Fabric 2.2运行enrolladmin.js时管理员用户注册失败且Wallets未定义问题求助

解决"TypeError: Cannot read property 'newFileSystemWallet' of undefined"错误

你遇到的这个错误核心是**Wallets对象没有被正确识别**,结合你的Fabric版本和代码来看,主要是依赖版本不兼容导致的,我整理了几个针对性的修复步骤:

1. 对齐Fabric相关依赖版本

你的Fabric核心版本是2.2.0,但目前使用的fabric-ca-client是1.4.7,且大概率fabric-network的版本也没和核心版本对齐——跨大版本的依赖会导致API不兼容,这是最可能的问题根源。

先检查当前项目中fabric-network的版本:

npm list fabric-network

如果版本不是2.2.0,执行以下命令安装对应版本的依赖:

# 安装和Fabric核心匹配的fabric-network
npm install fabric-network@2.2.0 --save
# 同时把fabric-ca-client也升级到2.2.0,避免版本冲突
npm install fabric-ca-client@2.2.0 --save

2. 确认导入语句的正确性

你代码里的const { Wallets } = require("fabric-network");是Fabric 2.x版本的正确写法,但如果之前安装的是1.x版本的fabric-network,这个导出是不存在的(1.x里用的是FileSystemWallet直接导入)。所以第一步的版本对齐是关键,版本匹配后这个导入语句就能正常拿到Wallets对象。

3. 清理缓存并重新安装依赖

如果之前安装过不同版本的Fabric包,可能存在缓存残留导致的冲突,执行以下命令彻底清理后重新安装:

rm -rf node_modules package-lock.json
npm install

4. 额外验证:钱包路径权限

虽然这不是当前错误的原因,但可以提前排查后续可能的问题:你的钱包路径path.join(process.cwd(), "wallet")会在脚本执行目录下创建wallet文件夹,确保你的运行用户对该目录有读写权限。

补充说明

Fabric 2.x和1.x的钱包API有明显差异:

  • 1.x版本:const FileSystemWallet = require('fabric-network').FileSystemWallet;
  • 2.x版本:统一通过Wallets工厂类创建不同类型的钱包,也就是你代码里用的Wallets.newFileSystemWallet()

你的代码写法完全符合2.x的规范,所以只要把依赖版本和Fabric核心版本对齐,这个错误就能解决。

内容的提问来源于stack exchange,提问作者Júnior Mascarenhas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:17:45